package com.oc.mobilsecurity.contact; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.security.KeyStore; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocket; import javax.net.ssl.TrustManagerFactory; import com.oc.mobilsecurity.R; import android.content.Context; import android.util.Log; public class Client { private static final int SERVER_PORT = 7777;// �˿ں� private static final String SERVER_IP = "192.168.1.102";// ����IP private static final String CLIENT_KET_PASSWORD = "mfs007";// ˽Կ���� private static final String CLIENT_TRUST_PASSWORD = "mfs007";// ����֤������ private static final String CLIENT_AGREEMENT = "TLS";// ʹ��Э�� private static final String CLIENT_KEY_MANAGER = "X509";// ��Կ������ private static final String CLIENT_TRUST_MANAGER = "X509"; private static final String CLIENT_KEY_KEYSTORE = "BKS";// �ܿ⣬�����õ���BouncyCastle�ܿ� private static final String CLIENT_TRUST_KEYSTORE = "BKS"; private SSLSocket sslSocket; public void init(Context context) { try { SSLContext sslContext = SSLContext.getInstance(CLIENT_AGREEMENT); KeyManagerFactory keyManager = KeyManagerFactory .getInstance(CLIENT_KEY_MANAGER); TrustManagerFactory trustManager = TrustManagerFactory .getInstance(CLIENT_TRUST_MANAGER); KeyStore kks = KeyStore.getInstance(CLIENT_KEY_KEYSTORE); KeyStore tks = KeyStore.getInstance(CLIENT_TRUST_KEYSTORE); kks.load(context.getResources().openRawResource(R.raw.debug), CLIENT_KET_PASSWORD.toCharArray()); tks.load(context.getResources().openRawResource(R.raw.debug), CLIENT_TRUST_PASSWORD.toCharArray()); keyManager.init(kks, CLIENT_KET_PASSWORD.toCharArray()); trustManager.init(tks); sslContext.init(keyManager.getKeyManagers(), trustManager.getTrustManagers(), null); sslSocket = (SSLSocket) sslContext.getSocketFactory().createSocket( SERVER_IP, SERVER_PORT); } catch (Exception e) { Log.v("TAG", e.toString()); } } public String process(String message) { if (sslSocket == null) { return "null"; } else { try { InputStream input = sslSocket.getInputStream(); OutputStream output = sslSocket.getOutputStream(); BufferedInputStream bis = new BufferedInputStream(input); BufferedOutputStream bos = new BufferedOutputStream(output); bos.write(message.getBytes()); bos.flush(); byte[] buffer = new byte[4096]; bis.read(buffer); String result = new String(buffer).trim(); sslSocket.close(); return result; } catch (Exception e) { return "error"; } } } }