问题描述
我正在制作一个USB android应用程序,该应用程序使用SSL加密数据传输(应用程序处于服务器模式)
USB数据是4个字节的标头+常规SSL协议(客户端/服务器问好,证书所有内容...完全相同)
这似乎很容易,因为Java SSLSocket
和SSLServerSocket
已经自动完成了大部分过程。我只需要删除USB数据头,然后手动注入其余的SSL数据即可,而不使用TCP套接字。
我研究了SSLSession,SSLEngine,试图将InputStream注入套接字对象,但是找不到解决方法。
我知道openssl
可以做到这一点,但是安装似乎很复杂
这是我最初的尝试,缺少连接部分。
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
InputStream tstore = activity.getAssets().open("certificate.crt");
trustStore.load(tstore,null);
tstore.close();
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
InputStream kstore = activity.getAssets().open("certificate.crt");
keyStore.load(kstore,null);
KeyManagerFactory kmf = KeyManagerFactory
.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(keyStore,null);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(),tmf.getTrustManagers(),SecureRandom.getInstanceStrong());
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)