1da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root/* 2da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * Copyright 2014 The Android Open Source Project 3da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * 4da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * you may not use this file except in compliance with the License. 6da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * You may obtain a copy of the License at 7da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * 8da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 9da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * 10da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * Unless required by applicable law or agreed to in writing, software 11da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * See the License for the specific language governing permissions and 14da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * limitations under the License. 15da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root */ 16da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 17da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootpackage android.net.http; 18da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 19da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport java.security.Principal; 20da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport java.security.cert.Certificate; 21da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport java.security.cert.X509Certificate; 22da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 23da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport javax.net.ssl.SSLPeerUnverifiedException; 24da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport javax.net.ssl.SSLSession; 25da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport javax.net.ssl.SSLSessionContext; 26da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootimport javax.net.ssl.SSLSocket; 27e2dd396cef8c3b1c22b799ac931e207fdc729154Brian Carlstromimport javax.net.ssl.X509TrustManager; 28da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 29da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root/** 30e2dd396cef8c3b1c22b799ac931e207fdc729154Brian Carlstrom * This is only used when a {@code certificate} is available but usage 31e2dd396cef8c3b1c22b799ac931e207fdc729154Brian Carlstrom * requires a {@link SSLSession}. 32da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * 33da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root * @hide 34da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root */ 35da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Rootpublic class DelegatingSSLSession implements SSLSession { 36da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root protected DelegatingSSLSession() { 37da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 38da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 39da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public static class CertificateWrap extends DelegatingSSLSession { 40da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root private final Certificate mCertificate; 41da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 42da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public CertificateWrap(Certificate certificate) { 43da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root mCertificate = certificate; 44da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 45da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 46da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 47da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public Certificate[] getPeerCertificates() throws SSLPeerUnverifiedException { 48da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root return new Certificate[] { mCertificate }; 49da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 50da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 51da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 52da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 53da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 54da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public int getApplicationBufferSize() { 55da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 56da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 57da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 58da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 59da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public String getCipherSuite() { 60da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 61da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 62da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 63da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 64da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public long getCreationTime() { 65da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 66da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 67da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 68da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 69da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public byte[] getId() { 70da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 71da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 72da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 73da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 74da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public long getLastAccessedTime() { 75da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 76da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 77da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 78da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 79da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public Certificate[] getLocalCertificates() { 80da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 81da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 82da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 83da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 84da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public Principal getLocalPrincipal() { 85da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 86da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 87da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 88da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 89da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public int getPacketBufferSize() { 90da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 91da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 92da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 93da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 94da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public javax.security.cert.X509Certificate[] getPeerCertificateChain() 95da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throws SSLPeerUnverifiedException { 96da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 97da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 98da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 99da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 100da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public Certificate[] getPeerCertificates() throws SSLPeerUnverifiedException { 101da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 102da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 103da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 104da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 105da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public String getPeerHost() { 106da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 107da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 108da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 109da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 110da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public int getPeerPort() { 111da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 112da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 113da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 114da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 115da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public Principal getPeerPrincipal() throws SSLPeerUnverifiedException { 116da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 117da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 118da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 119da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 120da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public String getProtocol() { 121da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 122da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 123da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 124da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 125da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public SSLSessionContext getSessionContext() { 126da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 127da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 128da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 129da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 130da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public Object getValue(String name) { 131da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 132da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 133da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 134da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 135da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public String[] getValueNames() { 136da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 137da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 138da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 139da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 140da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public void invalidate() { 141da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 142da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 143da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 144da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 145da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public boolean isValid() { 146da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 147da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 148da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 149da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 150da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public void putValue(String name, Object value) { 151da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 152da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 153da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root 154da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root @Override 155da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root public void removeValue(String name) { 156da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root throw new UnsupportedOperationException(); 157da776c872e8880b48dfac4a9e9a2d90e398e4608Kenny Root } 158e2dd396cef8c3b1c22b799ac931e207fdc729154Brian Carlstrom} 159