TestTrustManager.java revision 8a720cceee7ce319d647738dfeda3f302879f370
18a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom/* 28a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * Copyright (C) 2010 The Android Open Source Project 38a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * 48a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 58a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * you may not use this file except in compliance with the License. 68a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * You may obtain a copy of the License at 78a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * 88a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 98a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * 108a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * Unless required by applicable law or agreed to in writing, software 118a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 128a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * See the License for the specific language governing permissions and 148a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * limitations under the License. 158a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom */ 168a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 178a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrompackage libcore.javax.net.ssl; 188a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 198a720cceee7ce319d647738dfeda3f302879f370Brian Carlstromimport java.io.PrintStream; 208a720cceee7ce319d647738dfeda3f302879f370Brian Carlstromimport javax.net.ssl.TrustManager; 218a720cceee7ce319d647738dfeda3f302879f370Brian Carlstromimport javax.net.ssl.X509TrustManager; 228a720cceee7ce319d647738dfeda3f302879f370Brian Carlstromimport java.security.cert.CertificateException; 238a720cceee7ce319d647738dfeda3f302879f370Brian Carlstromimport java.security.cert.X509Certificate; 248a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 258a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom/** 268a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * TestTrustManager is a simple proxy class that wraps an existing 278a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * X509TrustManager to provide debug logging 288a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom */ 298a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrompublic final class TestTrustManager implements X509TrustManager { 308a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 318a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom private static final PrintStream out = System.out; 328a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 338a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom private final X509TrustManager trustManager; 348a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 358a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom public static TrustManager[] wrap(TrustManager[] trustManagers) { 368a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom TrustManager[] result = trustManagers.clone(); 378a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom for (int i = 0; i < result.length; i++) { 388a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom result[i] = wrap(result[i]); 398a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 408a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom return result; 418a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 428a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 438a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom public static TrustManager wrap(TrustManager trustManager) { 448a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom if (!(trustManager instanceof X509TrustManager)) { 458a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom return trustManager; 468a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 478a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom return new TestTrustManager((X509TrustManager) trustManager); 488a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 498a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 508a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom public TestTrustManager(X509TrustManager trustManager) { 518a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom this.trustManager = trustManager; 528a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 538a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 548a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom public void checkClientTrusted(X509Certificate[] chain, String authType) 558a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom throws CertificateException { 568a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom out.print("TestTrustManager.checkClientTrusted " 578a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom + "chain=" + chain.length + " " 588a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom + "authType=" + authType + " "); 598a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom try { 608a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom trustManager.checkClientTrusted(chain, authType); 618a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom out.println("OK"); 628a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } catch (CertificateException e) { 638a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom e.printStackTrace(out); 648a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom throw e; 658a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 668a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 678a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 688a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom public void checkServerTrusted(X509Certificate[] chain, String authType) 698a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom throws CertificateException { 708a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom out.print("TestTrustManager.checkServerTrusted " 718a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom + "chain=" + chain.length + " " 728a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom + "authType=" + authType + " "); 738a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom try { 748a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom trustManager.checkServerTrusted(chain, authType); 758a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom out.println("OK"); 768a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } catch (CertificateException e) { 778a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom e.printStackTrace(out); 788a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom throw e; 798a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 808a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 818a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 828a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom /** 838a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * Returns the list of certificate issuer authorities which are trusted for 848a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * authentication of peers. 858a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * 868a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * @return the list of certificate issuer authorities which are trusted for 878a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom * authentication of peers. 888a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom */ 898a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom public X509Certificate[] getAcceptedIssuers() { 908a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom X509Certificate[] result = trustManager.getAcceptedIssuers(); 918a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom out.print("TestTrustManager.getAcceptedIssuers result=" + result.length); 928a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom return result; 938a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom } 948a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom} 958a720cceee7ce319d647738dfeda3f302879f370Brian Carlstrom 96