Android开发新手。我试图将我最初为桌面创建的Java类移植到android(我想将它集成到我的应用程序中)。它是一个TCP / SSL客户端。我的主要问题是如何在我的应用程序的类部分(client.jks和serverpub.jks)中引用2 .JKS文件。不确定它在android中是如何工作的。我知道android上的文件系统类似于桌面系统。我想弄清楚的是如何将这些证书文件加载到android作为包的一部分,以便我们的应用程序可以找到它们。现在,我正在eclipse中使用AVD模拟器。
感谢您的帮助。
这是简化的原始类供参考。
public class DataRequest
{
SSLContext sc, sslctx;
KeyManagerFactory clientKeyManager;
TrustManagerFactory trustManager;
String sHostname, sPort;
void SSLSetup() throws Exception
{
//load client private key
KeyStore clientKeys = KeyStore.getInstance("JKS");
clientKeys.load(new FileInputStream("client.jks"),"password".toCharArray());
clientKeyManager = KeyManagerFactory.getInstance("SunX509");
clientKeyManager.init(clientKeys,"password".toCharArray());
//load server public key
KeyStore serverPub = KeyStore.getInstance("JKS");
serverPub.load(new FileInputStream("serverpub.jks"),"password".toCharArray());
trustManager = TrustManagerFactory.getInstance("SunX509");
trustManager.init(serverPub);
sc = SSLContext.getInstance("SSL");
sc.init(clientKeyManager.getKeyManagers(), trustManager.getTrustManagers(), new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
//create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
// use keys to create SSLSoket
sslctx = SSLContext.getInstance("TLS");
sslctx.init(clientKeyManager.getKeyManagers(), trustManager.getTrustManagers(), null);
}
public void sendRequest(String sCommand) throws Exception
{
//send the request
//get response from server
}
}
我的主要问题是