⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msecurityutil.java

📁 httptunnel.jar httptunnel java 源码
💻 JAVA
字号:
package net.jumperz.security;

import java.io.*;
import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.spec.*;
import java.util.Collection;
import java.util.Iterator;
import javax.net.*;
import javax.net.ssl.*;
import java.net.*;

import net.jumperz.util.MStreamUtil;

public class MSecurityUtil
implements MCryptInfo
{
private static final String SSL_ALGORITHM	= "TLS";
public static final String KEYSTORE_TYPE	= "JKS";
public static final String KEYSTORE_ALIAS	= "alias";

public static final String KEY_PASS		= "keyPass";
//---------------------------------------------------------------------------------------
public static Certificate[] loadCertificatesFromFile( String fileName )
throws IOException, CertificateException
{
FileInputStream fis = new FileInputStream( fileName );
return loadCertificatesFromStream( fis );
}
// --------------------------------------------------------------------------------
public static Certificate[] loadCertificatesFromStream( InputStream fis )
throws IOException, CertificateException
{
CertificateFactory cf = CertificateFactory.getInstance( "X.509" );
Collection c = cf.generateCertificates( fis );
int count = c.size();
Certificate[] certArray = new Certificate[ count ];

Iterator p = c.iterator();
int i = 0;
while( p.hasNext() )
	{
	certArray[ i ] = ( Certificate )p.next();
	++i;
	}

return certArray;
}
//---------------------------------------------------------------------------------------
public static Certificate loadCertificateFromFile( String fileName )
throws IOException, CertificateException
{
FileInputStream fis = new FileInputStream( fileName );
BufferedInputStream bis = new BufferedInputStream( fis );
CertificateFactory cf = CertificateFactory.getInstance( "X.509" );
Certificate cert = cf.generateCertificate( bis );
return cert;
}
//---------------------------------------------------------------------------------------
public static PrivateKey loadPrivateKeyFromFile( String fileName, String algorithm )
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException
{
FileInputStream fs = new FileInputStream( fileName );
return loadPrivateKeyFromStream( fs, algorithm );
}
//---------------------------------------------------------------------------------------
public static PrivateKey loadPrivateKeyFromStream( InputStream in, String algorithm )
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException
{
ByteArrayOutputStream bufStream = new ByteArrayOutputStream();
MStreamUtil.connectStream( in, bufStream );
byte[] keyBuffer = bufStream.toByteArray();
KeyFactory keyFactory = KeyFactory.getInstance( algorithm );
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec( keyBuffer );
PrivateKey privateKey = keyFactory.generatePrivate( keySpec );
return privateKey;
}
//--------------------------------------------------------------------------------
public static PublicKey loadPublicKeyFromFile( String fileName, String algorithm )
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException
{
ByteArrayOutputStream bufStream = new ByteArrayOutputStream();
FileInputStream fs = new FileInputStream( fileName );
MStreamUtil.connectStream( fs, bufStream );
byte[] keyBuffer = bufStream.toByteArray();
KeyFactory keyFactory = KeyFactory.getInstance( algorithm );
KeySpec keySpec = new X509EncodedKeySpec( keyBuffer );
PublicKey publicKey = keyFactory.generatePublic( keySpec );
return publicKey;
}
//---------------------------------------------------------------------------------------
public static ServerSocketFactory getServerSocketFactory( String certificateFileName, String privateKeyFileName, String algorithm )
throws KeyManagementException, KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException, InvalidKeySpecException, CertificateException, IOException
{
return MSecurityUtil.getServerSocketFactory( MSecurityUtil.generateKeyStore( certificateFileName, privateKeyFileName, algorithm ) );
}
//---------------------------------------------------------------------------------------
public static ServerSocketFactory getServerSocketFactory( InputStream certificateIn, InputStream privateKeyIn, String algorithm )
throws KeyManagementException, KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException, InvalidKeySpecException, CertificateException, IOException
{
return MSecurityUtil.getServerSocketFactory( MSecurityUtil.generateKeyStore( certificateIn, privateKeyIn, algorithm ) );
}
//---------------------------------------------------------------------------------------
public static KeyStore generateKeyStore( String certificateFileName, String privateKeyFileName, String algorithm )
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, CertificateException, KeyStoreException
{
Certificate[] certList		= MSecurityUtil.loadCertificatesFromFile( certificateFileName );
PrivateKey privateKey		= MSecurityUtil.loadPrivateKeyFromFile( privateKeyFileName, algorithm );

KeyStore keyStore = KeyStore.getInstance( KEYSTORE_TYPE );
keyStore.load( null, null );
keyStore.setKeyEntry( KEYSTORE_ALIAS, privateKey, KEY_PASS.toCharArray(), certList );

return keyStore;
}
//---------------------------------------------------------------------------------------
public static KeyStore generateKeyStore( InputStream certificateIn, InputStream privateKeyIn, String algorithm )
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, CertificateException, KeyStoreException
{
Certificate[] certList		= MSecurityUtil.loadCertificatesFromStream( certificateIn );
PrivateKey privateKey		= MSecurityUtil.loadPrivateKeyFromStream( privateKeyIn, algorithm );

KeyStore keyStore = KeyStore.getInstance( KEYSTORE_TYPE );
keyStore.load( null, null );
keyStore.setKeyEntry( KEYSTORE_ALIAS, privateKey, KEY_PASS.toCharArray(), certList );

return keyStore;
}
//---------------------------------------------------------------------------------------
public static ServerSocketFactory getServerSocketFactory( KeyStore keyStore )
throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException, KeyManagementException
{
SSLContext sslContext = SSLContext.getInstance( SSL_ALGORITHM );
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance( "SunX509" );
keyManagerFactory.init( keyStore, MSecurityUtil.KEY_PASS.toCharArray() );
sslContext.init( keyManagerFactory.getKeyManagers(), null, null );
return sslContext.getServerSocketFactory();
}
//--------------------------------------------------------------------------------
public static SocketFactory getBogusSslSocketFactory()
{
SSLContext ctx = null;
try
	{
	ctx = SSLContext.getInstance( "TLS" );
	TrustManager[] tmArray = new TrustManager[ 1 ];
	tmArray[ 0 ] = new MBogusX509TrustManager();
	ctx.init( null, tmArray, null );
	}
catch( Exception ignored )
	{
	}
return ctx.getSocketFactory();
}
//--------------------------------------------------------------------------------
public static Socket getBogusSslSocket( String host, int port )
throws IOException
{
return MSecurityUtil.getBogusSslSocketFactory().createSocket( host, port );
}
//---------------------------------------------------------------------------------------
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -