| /* | |
|  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved. | |
|  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
|  * | |
|  * This code is free software; you can redistribute it and/or modify it | |
|  * under the terms of the GNU General Public License version 2 only, as | |
|  * published by the Free Software Foundation.  Oracle designates this | |
|  * particular file as subject to the "Classpath" exception as provided | |
|  * by Oracle in the LICENSE file that accompanied this code. | |
|  * | |
|  * This code is distributed in the hope that it will be useful, but WITHOUT | |
|  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
|  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | |
|  * version 2 for more details (a copy is included in the LICENSE file that | |
|  * accompanied this code). | |
|  * | |
|  * You should have received a copy of the GNU General Public License version | |
|  * 2 along with this work; if not, write to the Free Software Foundation, | |
|  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
|  * | |
|  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
|  * or visit www.oracle.com if you need additional information or have any | |
|  * questions. | |
| */ | |
| /* | |
| * NOTE: this file was copied from javax.net.ssl.SSLContext | |
| */ | |
| package com.sun.net.ssl; | |
| import java.security.*; | |
| import java.util.*; | |
| import javax.net.ssl.*; | |
| import sun.security.ssl.SSLSocketFactoryImpl; | |
| import sun.security.ssl.SSLServerSocketFactoryImpl; | |
| /** | |
|  * Instances of this class represent a secure socket protocol | |
|  * implementation which acts as a factory for secure socket | |
|  * factories. This class is initialized with an optional set of | |
|  * key and trust managers and source of secure random bytes. | |
|  * | |
|  * @deprecated As of JDK 1.4, this implementation-specific class was | |
|  *      replaced by {@link javax.net.ssl.SSLContext}. | |
| */ | |
| @Deprecated | |
| public class SSLContext { | |
| private Provider provider; | |
| private SSLContextSpi contextSpi; | |
| private String protocol; | |
|     /** | |
|      * Creates an SSLContext object. | |
|      * | |
|      * @param contextSpi the delegate | |
|      * @param provider the provider | |
|      * @param algorithm the algorithm | |
| */ | |
| protected SSLContext(SSLContextSpi contextSpi, Provider provider, | |
| String protocol) { | |
| this.contextSpi = contextSpi; | |
| this.provider = provider; | |
| this.protocol = protocol; | |
| } | |
|     /** | |
|      * Generates a <code>SSLContext</code> object that implements the | |
|      * specified secure socket protocol. | |
|      * | |
|      * @param protocol the standard name of the requested protocol. | |
|      * | |
|      * @return the new <code>SSLContext</code> object | |
|      * | |
|      * @exception NoSuchAlgorithmException if the specified protocol is not | |
|      * available in the default provider package or any of the other provider | |
|      * packages that were searched. | |
| */ | |
| public static SSLContext getInstance(String protocol) | |
| throws NoSuchAlgorithmException | |
|     { | |
|         try { | |
| Object[] objs = SSLSecurity.getImpl(protocol, "SSLContext", | |
| (String) null); | |
| return new SSLContext((SSLContextSpi)objs[0], (Provider)objs[1], | |
| protocol); | |
| } catch (NoSuchProviderException e) { | |
| throw new NoSuchAlgorithmException(protocol + " not found"); | |
| } | |
| } | |
|     /** | |
|      * Generates a <code>SSLContext</code> object that implements the | |
|      * specified secure socket protocol. | |
|      * | |
|      * @param protocol the standard name of the requested protocol. | |
|      * @param provider the name of the provider | |
|      * | |
|      * @return the new <code>SSLContext</code> object | |
|      * | |
|      * @exception NoSuchAlgorithmException if the specified protocol is not | |
|      * available from the specified provider. | |
|      * @exception NoSuchProviderException if the specified provider has not | |
|      * been configured. | |
| */ | |
| public static SSLContext getInstance(String protocol, String provider) | |
| throws NoSuchAlgorithmException, NoSuchProviderException | |
|     { | |
| if (provider == null || provider.length() == 0) | |
| throw new IllegalArgumentException("missing provider"); | |
| Object[] objs = SSLSecurity.getImpl(protocol, "SSLContext", | |
| provider); | |
| return new SSLContext((SSLContextSpi)objs[0], (Provider)objs[1], | |
| protocol); | |
| } | |
|     /** | |
|      * Generates a <code>SSLContext</code> object that implements the | |
|      * specified secure socket protocol. | |
|      * | |
|      * @param protocol the standard name of the requested protocol. | |
|      * @param provider an instance of the provider | |
|      * | |
|      * @return the new <code>SSLContext</code> object | |
|      * | |
|      * @exception NoSuchAlgorithmException if the specified protocol is not | |
|      * available from the specified provider. | |
| */ | |
| public static SSLContext getInstance(String protocol, Provider provider) | |
| throws NoSuchAlgorithmException | |
|     { | |
| if (provider == null) | |
| throw new IllegalArgumentException("missing provider"); | |
| Object[] objs = SSLSecurity.getImpl(protocol, "SSLContext", | |
| provider); | |
| return new SSLContext((SSLContextSpi)objs[0], (Provider)objs[1], | |
| protocol); | |
| } | |
|     /** | |
|      * Returns the protocol name of this <code>SSLContext</code> object. | |
|      * | |
|      * <p>This is the same name that was specified in one of the | |
|      * <code>getInstance</code> calls that created this | |
|      * <code>SSLContext</code> object. | |
|      * | |
|      * @return the protocol name of this <code>SSLContext</code> object. | |
| */ | |
| public final String getProtocol() { | |
| return this.protocol; | |
| } | |
|     /** | |
|      * Returns the provider of this <code>SSLContext</code> object. | |
|      * | |
|      * @return the provider of this <code>SSLContext</code> object | |
| */ | |
| public final Provider getProvider() { | |
| return this.provider; | |
| } | |
|     /** | |
|      * Initializes this context. Either of the first two parameters | |
|      * may be null in which case the installed security providers will | |
|      * be searched for the highest priority implementation of the | |
|      * appropriate factory. Likewise, the secure random parameter may | |
|      * be null in which case the default implementation will be used. | |
|      * | |
|      * @param km the sources of authentication keys or null | |
|      * @param tm the sources of peer authentication trust decisions or null | |
|      * @param random the source of randomness for this generator or null | |
| */ | |
| public final void init(KeyManager[] km, TrustManager[] tm, | |
| SecureRandom random) | |
| throws KeyManagementException { | |
| contextSpi.engineInit(km, tm, random); | |
| } | |
|     /** | |
|      * Returns a <code>SocketFactory</code> object for this | |
|      * context. | |
|      * | |
|      * @return the factory | |
| */ | |
| public final SSLSocketFactory getSocketFactory() { | |
| return contextSpi.engineGetSocketFactory(); | |
| } | |
|     /** | |
|      * Returns a <code>ServerSocketFactory</code> object for | |
|      * this context. | |
|      * | |
|      * @return the factory | |
| */ | |
| public final SSLServerSocketFactory getServerSocketFactory() { | |
| return contextSpi.engineGetServerSocketFactory(); | |
| } | |
| } |