我有一个Bouncy Castle密钥库,我想用它连接到SSLSocketFactory.
在“桌面”Java中执行此 *** 作很简单,但是如何在androID上执行此 *** 作.
你输入资产还是res / raw似乎没什么区别 – 试图打开它并在实例化KeyStore实例(在这种情况下是java.security.KeyStore)传递给SSLSocketFactorys构造函数时出现问题.
以前有人有过这方面的成功吗?什么是“阅读”并打开它的最佳方式?任何指针或代码片段都是最受欢迎的.
非常感谢
唐
解决方法:
这应该做:
import androID.content.Context;import org.apache.http.conn.ClIEntConnectionManager;import org.apache.http.conn.scheme.PlainSocketFactory;import org.apache.http.conn.scheme.Scheme;import org.apache.http.conn.scheme.SchemeRegistry;import org.apache.http.conn.ssl.SSLSocketFactory;import org.apache.http.impl.clIEnt.DefaulthttpClIEnt;import org.apache.http.impl.conn.SingleClIEntConnManager;import java.io.inputStream;import java.security.KeyStore;public class MyhttpClIEnt extends DefaulthttpClIEnt { final Context context; public MyhttpClIEnt(Context context) { this.context = context; } @OverrIDe protected ClIEntConnectionManager createClIEntConnectionManager() { SchemeRegistry registry = new SchemeRegistry(); registry.register( new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme("https", newSslSocketFactory(), 443)); return new SingleClIEntConnManager(getParams(), registry); } private SSLSocketFactory newSslSocketFactory() { try { KeyStore trusted = KeyStore.getInstance("BKS"); inputStream in = context.getResources().openRawResource(R.raw.mystore); try { trusted.load(in, "ez24get".tochararray()); } finally { in.close(); } return new SSLSocketFactory(trusted); } catch (Exception e) { throw new AssertionError(e); } }}
ez24get将是密钥库的密码.
总结以上是内存溢出为你收集整理的Android:将密钥库作为资产打开以生成SSLSocketFactory全部内容,希望文章能够帮你解决Android:将密钥库作为资产打开以生成SSLSocketFactory所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)