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