Java Android 4.4自定义JCE提供程序实现,用于硬件支持的相互SSL身份验证
我目前正在使用Android Studio开发一个Android应用程序,用于基于硬件的相互SSL身份验证 客户端身份验证基于硬件,因此我无法访问客户端证书的私钥 将客户端证书作为密钥库中的X509证书获取 使用私钥对数据进行签名和验证 据我所知,实现这一点的唯一方法是使用自定义JCE提供程序、密钥库和签名类获取密钥库 我发现尼古拉·埃连科夫的博客,尤其是这篇文章,真的帮助我理解了智能卡通信。谢谢你。 我尝试实现一个自定义JCE提供程序和一个自定义密钥库和签名类来编写自定义身份验证。 我的提供商基于文档,但在Android上,我得到了以下例外:Java Android 4.4自定义JCE提供程序实现,用于硬件支持的相互SSL身份验证,java,android,authentication,ssl,nfc,Java,Android,Authentication,Ssl,Nfc,我目前正在使用Android Studio开发一个Android应用程序,用于基于硬件的相互SSL身份验证 客户端身份验证基于硬件,因此我无法访问客户端证书的私钥 将客户端证书作为密钥库中的X509证书获取 使用私钥对数据进行签名和验证 据我所知,实现这一点的唯一方法是使用自定义JCE提供程序、密钥库和签名类获取密钥库 我发现尼古拉·埃连科夫的博客,尤其是这篇文章,真的帮助我理解了智能卡通信。谢谢你。 我尝试实现一个自定义JCE提供程序和一个自定义密钥库和签名类来编写自定义身份验证。 我的提供
SSL Context Exceptionjava.security.NoSuchAlgorithmException: KeyStore mypkcs11 implementation not found
这是我的自定义提供程序:
public class PKCS11_Custom_Provider extends AuthProvider {
public PKCS11_Custom_Provider(){
super("Custom_p", 1.0, "Custom_p");
AccessController.doPrivileged(new java.security.PrivilegedAction() {
public Object run() {
put("KeyStore.mypkcs11",
"Pathtomyclass.P11KeyStore");
put("Signature.mypkcs11",
"Pathtomyclass.P11Signature");
return null;
}
});
}...
这是我的密钥库实现:
PKCS11_Custom_Provider myProvider = new PKCS11_Custom_Provider();
Security.insertProviderAt(myProvider, 2);
KeyStore ks = KeyStore.getInstance("myPKCS11", myProvider);
在使用NetBeans的JDK1.7上,代码运行良好,但在Android上,我总是遇到这个例外
我怎样才能解决这个问题