【Java开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了Java开源代码-SunJsseListener.java的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
// ========================================================================
// Copyright (c) 2000 Mort Bay Consulting (Australia) Pty. Ltd.
// $Id: SunJsseListener.java,v 3.5 2000/11/12 12:42:03 gregwilkins Exp $
// ========================================================================
package com.mortbay.HTTP;
import com.mortbay.Util.InetAddrPort;
import com.mortbay.Util.Log;
import com.mortbay.Util.Password;
import com.sun.net.ssl.KeyManager;
import com.sun.net.ssl.KeyManagerFactory;
import com.sun.net.ssl.SSLContext;
import com.sun.net.ssl.TrustManager;
import com.sun.net.ssl.TrustManagerFactory;
import com.sun.net.ssl.internal.ssl.Provider;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.security.Security;
import javax.net.ssl.SSLServerSocketFactory;
/* ------------------------------------------------------------ */
/** SSL Socket Listener for Sun's JSSE.
*
* This specialization of JsseListener is an specific listener
* using the Sun reference implementation.
*
* This is heavily based on the work from Court Demas, which in
* turn is based on the work from Forge Research.
*
* @version $Id: SunJsseListener.java,v 3.5 2000/11/12 12:42:03 gregwilkins Exp $
* @author Greg Wilkins (3710167@qq.com)
* @author Court Demas (3710167@qq.com)
* @author Forge Research Pty Ltd ACN 003 491 576
**/
public class SunJsseListener extends JsseListener
{
/* ------------------------------------------------------------ */
static
{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
}
/* ------------------------------------------------------------ */
private String _keystore=DEFAULT_KEYSTORE ;
public void setKeystore(String keystore)
{
_keystore = keystore;
}
/* ------------------------------------------------------------ */
private Password _password;
public void setPassword(String password)
{
_password = new Password(PASSWORD_PROPERTY,password);
}
/* ------------------------------------------------------------ */
private Password _keypassword;
public void setKeyPassword(String password)
{
_keypassword = new Password(KEYPASSWORD_PROPERTY,password);
}
/* ------------------------------------------------------------ */
/** Constructor.
* @exception IOException
*/
public SunJsseListener()
throws IOException
{
super();
}
/* ------------------------------------------------------------ */
/** Constructor.
* @param p_address
* @param p_server
* @exception IOException
*/
public SunJsseListener(InetAddrPort p_address)
throws IOException
{
super( p_address);
}
/* ------------------------------------------------------------ */
/*
* @return
* @exception Exception
*/
protected SSLServerSocketFactory createFactory()
throws Exception
{
_keystore = System.getProperty( KEYSTORE_PROPERTY,_keystore);
Log.event(KEYSTORE_PROPERTY+"="+_keystore);
if (_password==null)
_password = new Password(PASSWORD_PROPERTY);
Log.event(PASSWORD_PROPERTY+"="+_password.toStarString());
if (_keypassword==null)
_keypassword = new Password(KEYPASSWORD_PROPERTY,
null,
_password.toString());
Log.event(KEYPASSWORD_PROPERTY+"="+_keypassword.toStarString());
try
{
KeyStore ks = KeyStore.getInstance( "JKS" );
ks.load( new FileInputStream( new File( _keystore ) ),
_password.getCharArray());
KeyManagerFactory km = KeyManagerFactory.getInstance( "SunX509");
km.init( ks