X509CertSelectorTest.java revision 595db69d9b219f3d2d4598b5cb57c116cd157918
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 { 88f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 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 } 214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 215f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 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 660595db69d9b219f3d2d4598b5cb57c116cd157918Jesse Wilson selector.setPathToNames(sans); 6615c27fb80ffd335aa45dc8829ba3ecbc18c01e4e8Jesse Wilson selector.getPathToNames(); 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getPolicy() 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPolicy", 675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getPolicy() throws IOException { 678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies1 = new String[] { "1.3.6.1.5.5.7.3.1", 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe 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", 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe 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", 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" }; 682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies2 = new String[] { "1.3.6.7.3.1" }; 684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p1 = new HashSet<String>(Arrays.asList(policies1)); 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p2 = new HashSet<String>(Arrays.asList(policies2)); 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(null); 691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getPolicy()); 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p1); 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned date should be equal to specified", p1, selector.getPolicy()); 695f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p2); 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned date should be equal to specified", p2, selector.getPolicy()); 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getPrivateKeyValid() 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getPrivateKeyValid", 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getPrivateKeyValid() { 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100); 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200); 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getPrivateKeyValid()); 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(date1); 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date1 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getPrivateKeyValid())); 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getPrivateKeyValid().setTime(200); 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned date should be equal to specified", date1 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getPrivateKeyValid())); 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned date should differ", date2.equals(selector 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getPrivateKeyValid())); 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSerialNumber() 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSerialNumber", 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSerialNumber() { 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser1 = new BigInteger("10000"); 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser2 = new BigInteger("10001"); 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getSerialNumber()); 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(ser1); 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned serial number should be equal to specified", 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ser1, selector.getSerialNumber()); 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned serial number should differ", ser2 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getSerialNumber())); 745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubject() 749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubject", 754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubject() { 757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal("O=First Org."); 758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal("O=Second Org."); 759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getSubject()); 762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned subject should be equal to specified", sub1, 764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubject()); 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned subject should differ", sub2.equals(selector 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubject())); 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectAlternativeNames() 771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectAlternativeNames", 776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectAlternativeNames() { 779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans = new GeneralNames(); 784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans.addName(san1); 785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans.addName(san2); 786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert_1 = new TestCert(sans); 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAlternativeNames()); 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 793595db69d9b219f3d2d4598b5cb57c116cd157918Jesse Wilson selector.setSubjectAlternativeNames(sans.getPairsList()); 794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert_1)); 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubjectAlternativeNames().clear(); 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The modification of initialization object " 798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "should not affect the modification " 799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "of internal object.", selector.match(cert_1)); 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectAsBytes() 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectAsBytes", 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectAsBytes() { 816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAsBytes()); 832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned issuer should be equal to specified", 834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Arrays.equals(name1, selector.getSubjectAsBytes())); 835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned issuer should differ", name2 836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getSubjectAsBytes())); 837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub2); 838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned issuer should be equal to specified", 839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Arrays.equals(name2, selector.getSubjectAsBytes())); 840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectAsString() 847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectAsString", 852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectAsString() { 855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector.getSubjectAsString()); 862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned subject should be equal to specified", 864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project name1, selector.getSubjectAsString()); 865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned subject should differ", name2.equals(selector 866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectAsString())); 867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub2); 868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The returned subject should be equal to specified", 869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project name2, selector.getSubjectAsString()); 870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectKeyIdentifier() 874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectKeyIdentifier", 879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectKeyIdentifier() { 882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid1 = new byte[] { 1, 2, 3, 4, 5 }; // random value 883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid2 = new byte[] { 4, 5, 5, 4, 3, 2, 1 }; // random value 884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectKeyIdentifier()); 888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(skid1); 889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyID should be equal to specified", Arrays 890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(skid1, selector.getSubjectKeyIdentifier())); 891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubjectKeyIdentifier()[0]++; 892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned keyID should be equal to specified", Arrays 893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(skid1, selector.getSubjectKeyIdentifier())); 894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned keyID should differ", Arrays.equals(skid2, 895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.getSubjectKeyIdentifier())); 896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectPublicKey() 900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectPublicKey", 905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectPublicKey() throws Exception { 908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // SubjectPublicKeyInfo ::= SEQUENCE { 910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // algorithm AlgorithmIdentifier, 911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // subjectPublicKey BIT STRING } 912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] enc = { 0x30, 0x0E, // SEQUENCE 913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x30, 0x07, // SEQUENCE 914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x06, 0x02, 0x03, 0x05,// OID 915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x01, 0x01, 0x07, // ANY 916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x03, 0x03, 0x01, 0x01, 0x06, // subjectPublicKey 917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(enc); 922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey key = selector.getSubjectPublicKey(); 923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("0.3.5", key.getAlgorithm()); 924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("X.509", key.getFormat()); 925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(Arrays.equals(enc, key.getEncoded())); 926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(key.toString()); 927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project key = new MyPublicKey(); 929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(key); 931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey keyActual = selector.getSubjectPublicKey(); 932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(key, keyActual); 933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(key.getAlgorithm(), keyActual.getAlgorithm()); 934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#getSubjectPublicKeyAlgID() 938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getSubjectPublicKeyAlgID", 943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getSubjectPublicKeyAlgID() { 946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] validOIDs = { "0.0.20", "1.25.0", "2.0.39", "0.2.10", "1.35.15", 949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "2.17.89" }; 950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Selector should return null", selector 952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectPublicKeyAlgID()); 953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validOIDs.length; i++) { 955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(validOIDs[i]); 957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validOIDs[i], selector.getSubjectPublicKeyAlgID()); 958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.out.println("t = " + e.getMessage()); 960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //fail("Unexpected exception " + e.getMessage()); 961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 96487eb4de6347e1be029cde77dd43ad9b1af901472Urs Grob String pkaid1 = "1.2.840.113549.1.1.1"; // RSA encryption 96587eb4de6347e1be029cde77dd43ad9b1af901472Urs Grob String pkaid2 = "1.2.840.113549.1.1.4"; // MD5 with RSA encryption 966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(pkaid1); 969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The returned oid should be equal to specified", pkaid1 973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(selector.getSubjectPublicKeyAlgID())); 974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The returned oid should differ", pkaid2.equals(selector 975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getSubjectPublicKeyAlgID())); 976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#match(java.security.cert.Certificate) 980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "match", 985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.security.cert.Certificate.class} 986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_matchLjava_security_cert_Certificate() 988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(null)); 991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory certFact = CertificateFactory.getInstance("X509"); 993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate cert1 = (X509Certificate) certFact 994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getX509Certificate_v3())); 996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509Certificate cert2 = (X509Certificate) certFact 998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .generateCertificate(new ByteArrayInputStream(TestUtils 999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getX509Certificate_v1())); 1000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert1); 1002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert1)); 1003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert2)); 1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert2); 1006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert1)); 1007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert2)); 1008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setAuthorityKeyIdentifier(byte[]) 1012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setAuthorityKeyIdentifier", 1017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setAuthorityKeyIdentifierLB$() throws CertificateException { 1020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] akid1 = new byte[] { 1, 2, 3, 4, 5 }; // random value 1023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] akid2 = new byte[] { 5, 4, 3, 2, 1 }; // random value 1024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(akid1); 1025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(akid2); 1026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1027adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(null); 1028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getAuthorityKeyIdentifier()); 1033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(akid1); 1035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should not match the selection criteria.", 1036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1037adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1038adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setAuthorityKeyIdentifier(akid2); 1040adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should not match the selection criteria.", 1043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project akid2[0]++; 1046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setBasicConstraints(int) 1052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setBasicConstraints", 1057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class} 1058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setBasicConstraintsLint() { 1060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] invalidValues = { -3, -4, -5, 1000000000 }; 1062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 1063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setBasicConstraints(-3); 1065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 1066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 1067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 1068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] validValues = { -2, -1, 0, 1, 2, 3, 10, 20 }; 1072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 1073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setBasicConstraints(validValues[i]); 1074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validValues[i], selector.getBasicConstraints()); 1075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setCertificate(java.security.cert.Certificate) 1080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setCertificate", 1085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.security.cert.X509Certificate.class} 1086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setCertificateLjava_security_cert_X509Certificate() 1088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert("same certificate"); 1091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert("other certificate"); 1092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(null); 1095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match in the case of null " 1096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "certificateEquals criteria.", selector.match(cert1) 1097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert1); 1099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(cert2); 1104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificate(null); 1107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getCertificate()); 1108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setCertificateValid(java.util.Date) 1112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setCertificateValid", 1117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Date.class} 1118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setCertificateValidLjava_util_Date() 1120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100); 1124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200); 1125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(date1); 1126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(date2); 1127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(null); 1129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(selector.getCertificateValid()); 1130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(date1); 1131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setCertificateValid(date2); 1136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project date2.setTime(300); 1137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setExtendedKeyUsage(Set<String>) 1143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setExtendedKeyUsage", 1148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Set.class} 1149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setExtendedKeyUsageLjava_util_Set() 1151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> ku1 = new HashSet<String>(Arrays 1153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .asList(new String[] { "1.3.6.1.5.5.7.3.1", 1154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.2", "1.3.6.1.5.5.7.3.3", 1155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.4", "1.3.6.1.5.5.7.3.8", 1156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.9", "1.3.6.1.5.5.7.3.5", 1157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" })); 1158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> ku2 = new HashSet<String>(Arrays.asList(new String[] { 1159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe 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", 1160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe 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", 1161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.5", "1.3.6.1.5.5.7.3.6" })); 1162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(ku1); 1163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(ku2); 1164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(null); 1169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "extendedKeyUsage criteria.", selector.match(cert1) 1174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(ku1); 1177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ku1, selector.getExtendedKeyUsage()); 1181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setExtendedKeyUsage(ku2); 1184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ku2, selector.getExtendedKeyUsage()); 1188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setIssuer(byte[]) 1192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setIssuer", 1197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setIssuerLB$() throws CertificateException { 1200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 1201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 1202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 1203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 1204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 1205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 1206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 1207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 1208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal(name1); 1209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal(name2); 1210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(iss1); 1211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(iss2); 1212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer((byte[]) null); 1217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name1); 1225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name2); 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(cert2)); 1239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setIssuer(java.lang.String) 1243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setIssuer", 1248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 1249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setIssuerLjava_lang_String() throws CertificateException { 1251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 1253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 1254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal(name1); 1255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal(name2); 1256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(iss1); 1257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(iss2); 1258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer((String) null); 1263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name1); 1271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(name2); 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(cert2)); 1285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setIssuer(javax.security.auth.x500.X500Principal) 1289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setIssuer", 1294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {javax.security.auth.x500.X500Principal.class} 1295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setIssuerLjavax_security_auth_x500_X500Principal() 1297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss1 = new X500Principal("O=First Org."); 1299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal iss2 = new X500Principal("O=Second Org."); 1300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(iss1); 1301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(iss2); 1302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer((X500Principal) null); 1305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss1); 1309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setIssuer(iss2); 1314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setKeyUsage(boolean) 1320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setKeyUsage", 1325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean[].class} 1326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setKeyUsageZ() throws CertificateException { 1328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] ku1 = new boolean[] { true, true, true, true, true, true, 1329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project true, true, true }; 1330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // decipherOnly is disallowed 1331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] ku2 = new boolean[] { true, true, true, true, true, true, 1332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project true, true, false }; 1333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(ku1); 1334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(ku2); 1335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert3 = new TestCert((boolean[]) null); 1336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(null); 1340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "keyUsage criteria.", selector.match(cert1) 1342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(ku1); 1344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate which does not have a keyUsage extension " 1349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "implicitly allows all keyUsage values.", selector 1350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert3)); 1351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setKeyUsage(ku2); 1352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ku2[0] = !ku2[0]; 1353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setMatchAllSubjectAltNames(boolean) 1359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setMatchAllSubjectAltNames", 1364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {boolean.class} 1365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setMatchAllSubjectAltNamesZ() { 1367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert = new TestCert(); 1368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert)); 1371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(null)); 1373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setNameConstraints(byte[] 1377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * bytes) 1378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setNameConstraints", 1383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setNameConstraintsLB$() throws IOException { 1386fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralName[] name_constraints = new GeneralName[] { 1387fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(1, "822.Name"), 1388fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(1, "rfc@822.Name"), 1389fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(2, "Name.org"), 1390fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(2, "dNS.Name.org"), 1391fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1392fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(6, "http://Resource.Id"), 1393fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(6, "http://uniform.Resource.Id"), 1394fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(7, "1.1.1.1"), 1395fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1396fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// new GeneralName(new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1397fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1, 1, 1, 1, 1 }), }; 1398fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// 1399fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// for (int i = 0; i < name_constraints.length; i++) { 1400fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralSubtree subtree = new GeneralSubtree(name_constraints[i]); 1401fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// GeneralSubtrees subtrees = new GeneralSubtrees(); 1402fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// subtrees.addSubtree(subtree); 1403fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// NameConstraints constraints = new NameConstraints(subtrees, 1404fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// subtrees); 1405fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project// } 1406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1408fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project for (int i = 0; i < constraintBytes.length; i++) { 1409fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project selector.setNameConstraints(constraintBytes[i]); 1410fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project assertTrue(Arrays.equals(constraintBytes[i], selector 1411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getNameConstraints())); 1412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setPathToNames(Collection<List<?>>) 1417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setPathToNames", 1422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Collection.class} 1423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPathToNamesLjava_util_Collection() { 1425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 1427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] { 1, 2, 0, 1 })); 1428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 1429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 1430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san3 = new GeneralName(new ORAddress()); 1431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san4 = new GeneralName(new Name("O=Organization")); 1432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 1433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san7 = new GeneralName(7, "1.1.1.1"); 1434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san8 = new GeneralName(8, "1.2.3.4444.55555"); 1435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 1437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 1438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 1439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 1440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san3); 1441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san4); 1442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 1443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san7); 1444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san8); 1445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 1446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 1447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 1449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 1450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setMatchAllSubjectAltNames(true); 1452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPathToNames(null); 1454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectAlternativeNames criteria.", selector 1456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> sans = sans1.getPairsList(); 1460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1461595db69d9b219f3d2d4598b5cb57c116cd157918Jesse Wilson selector.setPathToNames(sans); 14625c27fb80ffd335aa45dc8829ba3ecbc18c01e4e8Jesse Wilson selector.getPathToNames(); 1463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 1465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setPolicy(Set<String>) 1471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setPolicy", 1476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Set.class} 1477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPolicyLjava_util_Set() throws IOException { 1479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies1 = new String[] { "1.3.6.1.5.5.7.3.1", 1480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe 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", 1481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe 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", 1482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "1.3.6.1.5.5.7.3.6", "1.3.6.1.5.5.7.3.7" }; 1483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] policies2 = new String[] { "1.3.6.7.3.1" }; 1485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p1 = new HashSet<String>(Arrays.asList(policies1)); 1487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<String> p2 = new HashSet<String>(Arrays.asList(policies2)); 1488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(policies1); 1492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(policies2); 1493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(null); 1495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "privateKeyValid criteria.", selector.match(cert1) 1497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p1); 1500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1504f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPolicy(p2); 1506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setPrivateKeyValid(java.util.Date) 1514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setPrivateKeyValid", 1519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Date.class} 1520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setPrivateKeyValidLjava_util_Date() 1522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date1 = new Date(100000000); 1524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date2 = new Date(200000000); 1525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date3 = new Date(300000000); 1526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date4 = new Date(150000000); 1527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Date date5 = new Date(250000000); 1528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(date1, date2); 1529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(date2, date3); 1530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(null); 1534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "privateKeyValid criteria.", selector.match(cert1) 1536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(date4); 1538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setPrivateKeyValid(date5); 1543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project date5.setTime(date4.getTime()); 1544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSerialNumber(java.math.BigInteger) 1550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSerialNumber", 1555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.math.BigInteger.class} 1556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSerialNumberLjava_math_BigInteger() 1558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser1 = new BigInteger("10000"); 1560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger ser2 = new BigInteger("10001"); 1561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(ser1); 1562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(ser2); 1563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(null); 1566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "serialNumber criteria.", selector.match(cert1) 1568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(ser1); 1570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSerialNumber(ser2); 1575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubject(byte[]) 1581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubject", 1586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectLB$() throws CertificateException { 1589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name1 = new byte[] 1590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=First Org." issuer name; 1591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115, 1592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 116, 32, 79, 114, 103, 46 }; 1593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] name2 = new byte[] 1594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // manually obtained DER encoding of "O=Second Org." issuer name; 1595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111, 1596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 110, 100, 32, 79, 114, 103, 46 }; 1597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 1598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 1599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sub1); 1600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sub2); 1601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject((byte[]) null); 1606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null issuer criteria.", selector.match(cert1) 1611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name1); 1614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name2); 1623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubject(java.lang.String) 1632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubject", 1637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 1638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectLjava_lang_String() throws CertificateException { 1640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name1 = "O=First Org."; 1641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name2 = "O=Second Org."; 1642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal(name1); 1643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal(name2); 1644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sub1); 1645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sub2); 1646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject((String) null); 1650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null subject criteria.", selector 1655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name1); 1659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(name2); 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("The certificate should match the selection criteria.", 1672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubject(javax.security.auth.x500.X500Principal) 1677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubject", 1682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {javax.security.auth.x500.X500Principal.class} 1683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectLjavax_security_auth_x500_X500Principal() 1685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub1 = new X500Principal("O=First Org."); 1687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X500Principal sub2 = new X500Principal("O=Second Org."); 1688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sub1); 1689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sub2); 1690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject((X500Principal) null); 1693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificates should match " 1694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "in the case of null subjcet criteria.", selector 1695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub1); 1698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubject(sub2); 1703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectAlternativeNames(Collection<List<?>>) 1709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectAlternativeNames", 1714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.util.Collection.class} 1715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectAlternativeNamesLjava_util_Collection() { 1717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 1720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] { 1, 2, 0, 1 })); 1721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 1722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 1723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san3 = new GeneralName(new ORAddress()); 1724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san4 = new GeneralName(new Name("O=Organization")); 1725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 1726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san7 = new GeneralName(7, "1.1.1.1"); 1727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san8 = new GeneralName(8, "1.2.3.4444.55555"); 1728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 1730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 1731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 1732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 1733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san3); 1734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san4); 1735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 1736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san7); 1737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san8); 1738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 1739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 1740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 1742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 1743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setMatchAllSubjectAltNames(true); 1745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(null); 1747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectAlternativeNames criteria.", selector 1749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .match(cert1) 1750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection<List<?>> sans = sans1.getPairsList(); 1753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1754595db69d9b219f3d2d4598b5cb57c116cd157918Jesse Wilson selector.setSubjectAlternativeNames(sans); 1755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 17565c27fb80ffd335aa45dc8829ba3ecbc18c01e4e8Jesse Wilson selector.getSubjectAlternativeNames(); 1757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 1759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1762f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectKeyIdentifier(byte[]) 1765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectKeyIdentifier", 1770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectKeyIdentifierLB$() throws CertificateException { 1773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid1 = new byte[] { 1, 2, 3, 4, 5 }; // random value 1774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] skid2 = new byte[] { 5, 4, 3, 2, 1 }; // random value 1775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(skid1); 1776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(skid2); 1777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(null); 1780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "serialNumber criteria.", selector.match(cert1) 1782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(skid1); 1784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectKeyIdentifier(skid2); 1789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project skid2[0]++; 1790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectPublicKey(byte[]) 1796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectPublicKey", 1801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 1802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectPublicKeyLB$() throws Exception { 1804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //SubjectPublicKeyInfo ::= SEQUENCE { 1806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // algorithm AlgorithmIdentifier, 1807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // subjectPublicKey BIT STRING } 1808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] enc = { 0x30, 0x0E, // SEQUENCE 1809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x30, 0x07, // SEQUENCE 1810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x06, 0x02, 0x03, 0x05,//OID 1811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x01, 0x01, 0x07, //ANY 1812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 0x03, 0x03, 0x01, 0x01, 0x06, // subjectPublicKey 1813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 1814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(enc); 1818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey key = selector.getSubjectPublicKey(); 1819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("0.3.5", key.getAlgorithm()); 1820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("X.509", key.getFormat()); 1821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(Arrays.equals(enc, key.getEncoded())); 1822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(key.toString()); 1823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectPublicKey(java.security.PublicKey key) 1827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectPublicKey", 1832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.security.PublicKey.class} 1833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectPublicKeyLjava_security_PublicKey() 1835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey1 = null; 1837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey2 = null; 1838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey1 = new TestKeyPair("RSA").getPublic(); 1840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey2 = new TestKeyPair("DSA").getPublic(); 1841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 1842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected Exception was thrown: " + e.getMessage()); 1843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(pkey1); 1846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(pkey2); 1847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey((PublicKey) null); 1850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectPublicKey criteria.", selector.match(cert1) 1852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(pkey1); 1854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKey(pkey2); 1859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#setSubjectPublicKeyAlgID(java.lang.String) 1865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1868adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "setSubjectPublicKeyAlgID", 1870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 1871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setSubjectPublicKeyAlgIDLjava_lang_String() 1873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 1874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String pkaid1 = "1.2.840.113549.1.1.1"; // RSA (source: 1877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // http://asn1.elibel.tm.fr) 1878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String pkaid2 = "1.2.840.10040.4.1"; // DSA (source: 1879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // http://asn1.elibel.tm.fr) 1880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey1; 1881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PublicKey pkey2; 1882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey1 = new TestKeyPair("RSA").getPublic(); 1884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project pkey2 = new TestKeyPair("DSA").getPublic(); 1885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 1886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project e.printStackTrace(); 1887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected Exception was thrown: " + e.getMessage()); 1888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 1889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(pkey1); 1891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(pkey2); 1892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(null); 1895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Any certificate should match in the case of null " 1900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + "subjectPublicKeyAlgID criteria.", selector.match(cert1) 1901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && selector.match(cert2)); 1902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] validOIDs = { "0.0.20", "1.25.0", "2.0.39", "0.2.10", "1.35.15", 1904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "2.17.89", "2.5.29.16", "2.5.29.17", "2.5.29.30", "2.5.29.32", 1905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "2.5.29.37" }; 1906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validOIDs.length; i++) { 1908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(validOIDs[i]); 1910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(validOIDs[i], selector.getSubjectPublicKeyAlgID()); 1911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e.getMessage()); 1913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1915f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] invalidOIDs = { "0.20", "1.25", "2.39", "3.10"}; 1917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidOIDs.length; i++) { 1918adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(invalidOIDs[i]); 1920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException wasn't thrown for " + invalidOIDs[i]); 1921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(pkaid1); 1927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert1)); 1932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("The certificate should not match the selection criteria.", 1933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectPublicKeyAlgID(pkaid2); 1936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 1937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected IOException was thrown."); 1938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("The certificate should match the selection criteria.", 1940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.match(cert2)); 1941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 1944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#toString() 1945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 1947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 1948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 1949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "toString", 1950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {} 1951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 1952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() { 1953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 1954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(selector.toString()); 1955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public class MyPublicKey implements PublicKey { 1958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 2899528375354645752L; 1959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyPublicKey() { 1961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(); 1962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getAlgorithm() { 1965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "PublicKey"; 1966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getFormat() { 1969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return "Format"; 1970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getEncoded() { 1973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return new byte[0]; 1974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long getSerVerUID() { 1977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return serialVersionUID; 1978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private class TestCert extends X509Certificate { 1982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = 176676115254260405L; 1984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* Stuff fields */ 1986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String equalCriteria = null; // to simplify method equals() 1987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected BigInteger serialNumber = null; 1989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected X500Principal issuer = null; 1991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected X500Principal subject = null; 1993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] keyIdentifier = null; 1995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Date date = null; 1997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Date notBefore = null; 1999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Date notAfter = null; 2001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected PublicKey key = null; 2003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected boolean[] keyUsage = null; 2005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected List<String> extKeyUsage = null; 2007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected int pathLen = 1; 2009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected GeneralNames sans = null; 2011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected byte[] encoding = null; 2013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String[] policies = null; 2015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Collection<List<?>> collection = null; 2017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected NameConstraints nameConstraints = null; 2019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* Stuff methods */ 2021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert() { 2022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(GeneralNames sans) { 2025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSubjectAlternativeNames(sans); 2026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2027adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(NameConstraints nameConstraints) { 2029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.nameConstraints = nameConstraints; 2030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Collection<List<?>> collection) { 2033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setCollection(collection); 2034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(String equalCriteria) { 2037adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setEqualCriteria(equalCriteria); 2038adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2040adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(String[] policies) { 2041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPolicies(policies); 2042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(BigInteger serial) { 2045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSerialNumber(serial); 2046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(X500Principal principal) { 2049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setIssuer(principal); 2050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setSubject(principal); 2051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(byte[] array) { 2054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setKeyIdentifier(array); 2055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Date date) { 2058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setDate(date); 2059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Date notBefore, Date notAfter) { 2062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPeriod(notBefore, notAfter); 2063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(PublicKey key) { 2066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setPublicKey(key); 2067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(boolean[] keyUsage) { 2070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setKeyUsage(keyUsage); 2071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(Set<String> extKeyUsage) { 2074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setExtendedKeyUsage(extKeyUsage); 2075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public TestCert(int pathLen) { 2078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.pathLen = pathLen; 2079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSubjectAlternativeNames(GeneralNames sans) { 2082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.sans = sans; 2083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setCollection(Collection<List<?>> collection) { 2086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.collection = collection; 2087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPolicies(String[] policies) { 2090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.policies = policies; 2091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setExtendedKeyUsage(Set<String> extKeyUsage) { 2094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.extKeyUsage = (extKeyUsage == null) ? null : new ArrayList<String>( 2095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project extKeyUsage); 2096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setKeyUsage(boolean[] keyUsage) { 2099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.keyUsage = (keyUsage == null) ? null : (boolean[]) keyUsage 2100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .clone(); 2101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPublicKey(PublicKey key) { 2104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.key = key; 2105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setPeriod(Date notBefore, Date notAfter) { 2108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.notBefore = notBefore; 2109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.notAfter = notAfter; 2110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSerialNumber(BigInteger serial) { 2113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.serialNumber = serial; 2114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEqualCriteria(String equalCriteria) { 2117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.equalCriteria = equalCriteria; 2118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setIssuer(X500Principal issuer) { 2121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.issuer = issuer; 2122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setSubject(X500Principal subject) { 2125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.subject = subject; 2126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setKeyIdentifier(byte[] subjectKeyID) { 2129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.keyIdentifier = (byte[]) subjectKeyID.clone(); 2130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setDate(Date date) { 2133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.date = new Date(date.getTime()); 2134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void setEncoding(byte[] encoding) { 2137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.encoding = encoding; 2138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* Method implementations */ 2141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object cert) { 2142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (cert == null) { 2143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 2144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((equalCriteria == null) 2146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project || (((TestCert) cert).equalCriteria == null)) { 2147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 2148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 2149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return equalCriteria.equals(((TestCert) cert).equalCriteria); 2150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String toString() { 2154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (equalCriteria != null) { 2155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return equalCriteria; 2156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ""; 2158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void checkValidity() throws CertificateExpiredException, 2161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateNotYetValidException { 2162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void checkValidity(Date date) 2165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateExpiredException, 2166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateNotYetValidException { 2167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (this.date == null) { 2168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertificateExpiredException(); 2169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int result = this.date.compareTo(date); 2171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (result > 0) { 2172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertificateExpiredException(); 2173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (result < 0) { 2175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new CertificateNotYetValidException(); 2176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getVersion() { 2180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return 3; 2181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public BigInteger getSerialNumber() { 2184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (serialNumber == null) ? new BigInteger("1111") 2185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project : serialNumber; 2186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Principal getIssuerDN() { 2189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return issuer; 2190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X500Principal getIssuerX500Principal() { 2193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return issuer; 2194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Principal getSubjectDN() { 2197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return subject; 2198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X500Principal getSubjectX500Principal() { 2201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return subject; 2202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Date getNotBefore() { 2205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Date getNotAfter() { 2209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getTBSCertificate() throws CertificateEncodingException { 2213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getSignature() { 2217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getSigAlgName() { 2221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String getSigAlgOID() { 2225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getSigAlgParams() { 2229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean[] getIssuerUniqueID() { 2233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean[] getSubjectUniqueID() { 2237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean[] getKeyUsage() { 2241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return keyUsage; 2242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public List<String> getExtendedKeyUsage() 2245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateParsingException { 2246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return extKeyUsage; 2247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getBasicConstraints() { 2250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return pathLen; 2251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void verify(PublicKey key) throws CertificateException, 2254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchAlgorithmException, InvalidKeyException, 2255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project NoSuchProviderException, SignatureException { 2256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void verify(PublicKey key, String sigProvider) 2259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException, NoSuchAlgorithmException, 2260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InvalidKeyException, NoSuchProviderException, 2261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SignatureException { 2262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public PublicKey getPublicKey() { 2265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return key; 2266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getEncoded() throws CertificateEncodingException { 2269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return encoding; 2270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Set<String> getNonCriticalExtensionOIDs() { 2273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Set<String> getCriticalExtensionOIDs() { 2277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getExtensionValue(String oid) { 2281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (("2.5.29.14".equals(oid)) || ("2.5.29.35".equals(oid))) { 2283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Extension value is represented as an OctetString 2284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode(keyIdentifier); 2285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.16".equals(oid)) { 2287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PrivateKeyUsagePeriod pkup = new PrivateKeyUsagePeriod( 2288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notBefore, notAfter); 2289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] encoded = pkup.getEncoded(); 2290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode(encoded); 2291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (("2.5.29.37".equals(oid)) && (extKeyUsage != null)) { 2293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ASN1Oid[] oa = new ASN1Oid[extKeyUsage.size()]; 2294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] val = new String[extKeyUsage.size()]; 2295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = extKeyUsage.iterator(); 2296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int id = 0; 2297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (it.hasNext()) { 2298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project oa[id] = ASN1Oid.getInstanceForString(); 2299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project val[id++] = (String) it.next(); 2300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new ASN1Sequence(oa).encode(val)); 2303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.19".equals(oid)) { 2305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new ASN1Sequence(new ASN1Type[] { 2307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ASN1Boolean.getInstance(), 2308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ASN1Integer.getInstance() }) 2309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .encode(new Object[] { 2310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Boolean(pathLen != 1), 2311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger.valueOf(pathLen) 2312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .toByteArray() })); 2313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.17".equals(oid) && (sans != null)) { 2315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (sans.getNames() == null) { 2316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames.ASN1.encode(sans)); 2320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.32".equals(oid) && (policies != null) 2322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (policies.length > 0)) { 2323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Certificate Policies Extension (as specified in rfc 3280) 2324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificatePolicies certificatePolicies = new CertificatePolicies(); 2325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < policies.length; i++) { 2326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PolicyInformation policyInformation = new PolicyInformation( 2327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project policies[i]); 2328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certificatePolicies.addPolicyInformation(policyInformation); 2329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project certificatePolicies.getEncoded()); 2332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ("2.5.29.30".equals(oid) && (nameConstraints != null)) { // 2334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Name 2335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Constraints 2336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Extension 2337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // (as 2338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // specified 2339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // in 2340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // rfc 2341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // 3280) 2342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return ASN1OctetString.getInstance().encode( 2343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project nameConstraints.getEncoded()); 2344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean hasUnsupportedCriticalExtension() { 2350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return false; 2351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2352f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2354f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X509Certificate rootCertificate; 2356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public X509Certificate endCertificate; 2358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyCRL crl; 2360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private X509CertSelector theCertSelector; 2362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private CertPathBuilder builder; 2364f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void setupEnvironment() throws Exception { 2366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // create certificates and CRLs 2367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertificateFactory cf = CertificateFactory.getInstance("X.509"); 2368fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project ByteArrayInputStream bi = new ByteArrayInputStream(TestUtils.rootCert.getBytes()); 2369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rootCertificate = (X509Certificate) cf.generateCertificate(bi); 2370fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bi = new ByteArrayInputStream(TestUtils.endCert.getBytes()); 2371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project endCertificate = (X509Certificate) cf.generateCertificate(bi); 2372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigInteger revokedSerialNumber = BigInteger.valueOf(1); 2374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project crl = new MyCRL("X.509"); 2375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// X509CRL rootCRL = X509CRL; 2376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// X509CRL interCRL = X509CRLExample.createCRL(interCert, interPair 2377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .getPrivate(), revokedSerialNumber); 2378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // create CertStore to support path building 2380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project List<Object> list = new ArrayList<Object>(); 2381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.add(rootCertificate); 2383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.add(endCertificate); 2384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// CollectionCertStoreParameters params = new CollectionCertStoreParameters( 2386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// list); 2387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// CertStore store = CertStore.getInstance("Collection", params); 2388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// 2389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector = new X509CertSelector(); 2390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setCertificate(endCertificate); 2391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setIssuer(endCertificate.getIssuerX500Principal() 2392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getEncoded()); 2393f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // build the path 2395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project builder = CertPathBuilder.getInstance("PKIX"); 2396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2398f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private CertPath buildCertPath() throws InvalidAlgorithmParameterException { 2400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXCertPathBuilderResult result = null; 2401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PKIXBuilderParameters buildParams = new PKIXBuilderParameters( 2402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collections.singleton(new TrustAnchor(rootCertificate, null)), 2403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector); 2404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result = (PKIXCertPathBuilderResult) builder 2406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .build(buildParams); 2407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch(CertPathBuilderException e) { 2408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 2409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return result.getCertPath(); 2411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2412f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addPathToName(int, byte[]) 2415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies Exception", 2419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addPathToName", 2420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, byte[].class} 2421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addPathToNameLintLbyte_array2() throws Exception { 2423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestUtils.initCertPathSSCertChain(); 2424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setupEnvironment(); 2425fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[] bytes, bytesName; 2426fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // GeneralName name = new GeneralName(1, "822.Name"); 2427fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytes = name.getEncoded(); 2428fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytesName = name.getEncodedName(); 2429fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bytes = new byte[] {-127, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 243050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob bytesName = new byte[] {22, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 243150b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob bytes[bytes.length-3] = (byte) 200; 2432f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 243450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob theCertSelector.addPathToName(1, bytes); 2435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2438f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2440f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2441fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project theCertSelector.addPathToName(1, bytesName); 2442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPath p = buildCertPath(); 2444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(p); 2445f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2447f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// name = new GeneralName(new Name("O=Android")); 2449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// theCertSelector.addPathToName(4, endCertificate.getSubjectDN().getName()); 2450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.addPathToName(4, TestUtils.rootCertificateSS.getIssuerX500Principal().getEncoded()); 2451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project p = TestUtils.buildCertPathSSCertChain(); 2453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(p); 2454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2455f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addPathToName(int, String) 2458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies IOException.", 2462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addPathToName", 2463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, java.lang.String.class} 2464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addPathToNameLintLjava_lang_String2() throws Exception { 2466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project setupEnvironment(); 2467fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[] bytes, bytesName; 2468fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // GeneralName name = new GeneralName(1, "822.Name"); 2469fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytes = name.getEncoded(); 2470fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project // bytesName = name.getEncodedName(); 2471fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bytes = new byte[] {-127, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 2472fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project bytesName = new byte[] {22, 8, 56, 50, 50, 46, 78, 97, 109, 101}; 2473fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project assertNotNull(bytes); 2474fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project byte[] b = new byte[bytes.length]; 2475fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project b = bytes; 2476fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project b[bytes.length-3] = (byte) 200; 2477f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.addPathToName(1, new String(b)); 2480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2483f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2485f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2486fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project theCertSelector.addPathToName(1, new String(bytesName)); 2487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2488f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CertPath p = buildCertPath(); 2490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(p); 2491f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.setPathToNames(null); 2493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project theCertSelector.addPathToName(1, rootCertificate.getIssuerX500Principal().getName()); 2494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(theCertSelector.getPathToNames()); 2495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //p = buildCertPath(); 2496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //assertNotNull(p); 2497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2498f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addSubjectAlternativeName(int, byte[]) 2501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "IOException checking missed", 2505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addSubjectAlternativeName", 2506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, byte[].class} 2507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addSubjectAlternativeNameLintLbyte_array2() 2509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws Exception { 2510f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2511f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san0 = new GeneralName(new OtherName("1.2.3.4.5", 2513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new byte[] {1, 2, 0, 1})); 2514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 2515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 2516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 2518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san0); 2519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san1); 2520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 2521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 2523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(0, san0.getEncodedName()); 2525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(1, san1.getEncodedName()); 2526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(2, san2.getEncodedName()); 2527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 2529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san0); 2530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 2532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 2533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert1)); 2535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert2)); 2536f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(null); 2538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName name = new GeneralName(new Name("O=Android")); 2540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(0, name.getEncodedName()); 2542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 2549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @tests java.security.cert.X509CertSelector#addSubjectAlternativeName(int, String) 2550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 2552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 2553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 2554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "addSubjectAlternativeName", 2555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {int.class, java.lang.String.class} 2556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 2557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_addSubjectAlternativeNameLintLjava_lang_String2() throws Exception{ 2558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 2559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName san2 = new GeneralName(2, "dNSName"); 2560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans1 = new GeneralNames(); 2562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san6); 2563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans1.addName(san2); 2564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project X509CertSelector selector = new X509CertSelector(); 2566f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(6, "http://uniform.Resource.Id"); 2568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(2, "dNSName"); 2569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralNames sans2 = new GeneralNames(); 2571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sans2.addName(san2); 2572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert1 = new TestCert(sans1); 2574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TestCert cert2 = new TestCert(sans2); 2575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(selector.match(cert1)); 2577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(selector.match(cert2)); 2578f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 2579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.setSubjectAlternativeNames(null); 2580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project GeneralName name = new GeneralName(new Name("O=Android")); 2582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 2583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selector.addSubjectAlternativeName(0, (name.toString())); 2584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 2585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 2586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 2590