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