TrustManagerFactoryImpl.java revision 347b2a604114602da9bc4ae040278f74d11c2f51
1c383a500aa59423264811be3874461bf8adbfea0Zonr Chang/* 20a813a3ef2a82f19d7eab9e23ae8493197143803Stephen Hines * Licensed to the Apache Software Foundation (ASF) under one or more 3c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * contributor license agreements. See the NOTICE file distributed with 4c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * this work for additional information regarding copyright ownership. 5c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * The ASF licenses this file to You under the Apache License, Version 2.0 6c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * (the "License"); you may not use this file except in compliance with 7c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * the License. You may obtain a copy of the License at 8c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * 9c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * http://www.apache.org/licenses/LICENSE-2.0 10c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * 11c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Unless required by applicable law or agreed to in writing, software 12c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * distributed under the License is distributed on an "AS IS" BASIS, 13c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * See the License for the specific language governing permissions and 15c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * limitations under the License. 16c383a500aa59423264811be3874461bf8adbfea0Zonr Chang */ 17e639eb5caa2c386b4a60659a4929e8a6141a2cbeStephen Hines 18e639eb5caa2c386b4a60659a4929e8a6141a2cbeStephen Hinespackage org.apache.harmony.xnet.provider.jsse; 19462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 20e639eb5caa2c386b4a60659a4929e8a6141a2cbeStephen Hinesimport java.io.IOException; 21462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoimport java.security.InvalidAlgorithmParameterException; 22e639eb5caa2c386b4a60659a4929e8a6141a2cbeStephen Hinesimport java.security.KeyStore; 23462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoimport java.security.KeyStoreException; 24e639eb5caa2c386b4a60659a4929e8a6141a2cbeStephen Hinesimport java.security.NoSuchAlgorithmException; 25e639eb5caa2c386b4a60659a4929e8a6141a2cbeStephen Hinesimport java.security.cert.CertificateException; 26be27482cdeaf08576bc39b72a15d35d13014a636Loganimport javax.net.ssl.ManagerFactoryParameters; 27462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoimport javax.net.ssl.TrustManager; 28be27482cdeaf08576bc39b72a15d35d13014a636Loganimport javax.net.ssl.TrustManagerFactorySpi; 299ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao 309ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao/** 31462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao * 323fd0a94a5cf1656569b1aea07043cc63939dcb46Stephen Hines * TrustManagerFactory service provider interface implementation. 333fd0a94a5cf1656569b1aea07043cc63939dcb46Stephen Hines * 34462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao * @see javax.net.ssl.TrustManagerFactorySpi 356315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr */ 3623c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hinespublic class TrustManagerFactoryImpl extends TrustManagerFactorySpi { 379ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao 38462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao private KeyStore keyStore; 39462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 406315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr /** 416315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr * @see javax.net.ssl.TrustManagerFactorySpi#engineInit(KeyStore) 426315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr */ 436315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr @Override 446315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr public void engineInit(KeyStore ks) throws KeyStoreException { 459ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao if (ks != null) { 46462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao keyStore = ks; 47462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao } else { 48a41ce1d98094da84643995d40d71c529905123fcZonr Chang keyStore = KeyStore.getInstance("AndroidCAStore"); 49a41ce1d98094da84643995d40d71c529905123fcZonr Chang try { 50a41ce1d98094da84643995d40d71c529905123fcZonr Chang keyStore.load(null, null); 51593a894650e81be54173106ec266f0311cebebd3Stephen Hines } catch (IOException e) { 52a41ce1d98094da84643995d40d71c529905123fcZonr Chang throw new KeyStoreException(e); 53462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao } catch (CertificateException e) { 54462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao throw new KeyStoreException(e); 559ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao } catch (NoSuchAlgorithmException e) { 569ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao throw new KeyStoreException(e); 579ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao } 589ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao } 599ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao } 60a41ce1d98094da84643995d40d71c529905123fcZonr Chang 619ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao /** 629ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao * @see javax.net.ssl#engineInit(ManagerFactoryParameters) 63593a894650e81be54173106ec266f0311cebebd3Stephen Hines */ 649ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao @Override 659ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao public void engineInit(ManagerFactoryParameters spec) 669ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao throws InvalidAlgorithmParameterException { 679e5b503349719144f63ccb7c62ee9c291a7d83b8Stephen Hines throw new InvalidAlgorithmParameterException( 689e5b503349719144f63ccb7c62ee9c291a7d83b8Stephen Hines "ManagerFactoryParameters not supported"); 699e5b503349719144f63ccb7c62ee9c291a7d83b8Stephen Hines } 703fd0a94a5cf1656569b1aea07043cc63939dcb46Stephen Hines 714a4bf92a8add68629a7e6e59ef81c3c3fe603a75Stephen Hines /** 724cc67fce91f43215d61b2695746eab102a3db516Stephen Hines * @see javax.net.ssl#engineGetTrustManagers() 739ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao */ 7423c4358f12bd9d0ba7166eceebd683db95a41b3fStephen Hines @Override 759ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao public TrustManager[] engineGetTrustManagers() { 769ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao if (keyStore == null) { 77a41ce1d98094da84643995d40d71c529905123fcZonr Chang throw new IllegalStateException( 78a41ce1d98094da84643995d40d71c529905123fcZonr Chang "TrustManagerFactory is not initialized"); 799ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao } 809ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao return new TrustManager[] { new TrustManagerImpl(keyStore) }; 819ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao } 829ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao} 839ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao