201 lines · 7.0 KB · Java
RawDownload
/* * 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}. */@Deprecatedpublic 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();    }}