OpenSSLServerSocketFactoryImpl.java revision ecaf759ba374a3e53613c97b47920bf520bb93cf
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.xnet.provider.jsse;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.InetAddress;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.ServerSocket;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyManagementException;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class OpenSSLServerSocketFactoryImpl extends javax.net.ssl.SSLServerSocketFactory {
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private SSLParameters sslParameters;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private IOException instantiationException;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public OpenSSLServerSocketFactoryImpl() {
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super();
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.sslParameters = SSLParameters.getDefault();
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.sslParameters.setUseClientMode(false);
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (KeyManagementException e) {
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            instantiationException =
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new IOException("Delayed instantiation exception:");
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            instantiationException.initCause(e);
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public OpenSSLServerSocketFactoryImpl(SSLParameters sslParameters) {
42ecaf759ba374a3e53613c97b47920bf520bb93cfBrian Carlstrom        this.sslParameters = (SSLParameters) sslParameters.clone();
43ecaf759ba374a3e53613c97b47920bf520bb93cfBrian Carlstrom        this.sslParameters.setUseClientMode(false);
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String[] getDefaultCipherSuites() {
47ecaf759ba374a3e53613c97b47920bf520bb93cfBrian Carlstrom        return NativeCrypto.getDefaultCipherSuites();
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String[] getSupportedCipherSuites() {
51ecaf759ba374a3e53613c97b47920bf520bb93cfBrian Carlstrom        return NativeCrypto.getSupportedCipherSuites();
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ServerSocket createServerSocket() throws IOException {
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new OpenSSLServerSocketImpl((SSLParameters) sslParameters.clone());
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ServerSocket createServerSocket(int port) throws IOException {
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new OpenSSLServerSocketImpl(port, (SSLParameters) sslParameters.clone());
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ServerSocket createServerSocket(int port, int backlog)
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throws IOException {
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new OpenSSLServerSocketImpl(port, backlog, (SSLParameters) sslParameters.clone());
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ServerSocket createServerSocket(int port, int backlog,
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            InetAddress iAddress) throws IOException {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new OpenSSLServerSocketImpl(port, backlog, iAddress, (SSLParameters) sslParameters.clone());
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
72