android解析p12证书中的私钥出错!

smallsusu 2017-12-19 05:45:48
我用BC解析SM2的P12证书,对应的Java代码大致如下:
public KeyStore getKeyStore(String path, String cert_password)
{
KeyStore ks = null;
try
{
ks = KeyStore.getInstance("PKCS12", new org.bouncycastle.jce.provider.BouncyCastleProvider());
FileInputStream fis = new FileInputStream(new File(path));
char[] nPassword = null;
if ((cert_password == null) || cert_password.trim().equals(""))
{
nPassword = null;
}

else
{
nPassword = cert_password.toCharArray();
}
ks.load(fis, nPassword);

fis.close();
Enumeration enumm = ks.aliases();
String keyAlias = null;
if (enumm.hasMoreElements())
{
keyAlias = (String)enumm.nextElement();
}
ECPrivateKey prikey = (ECPrivateKey) ks.getKey(keyAlias, nPassword);
BigInteger privateKey = prikey.getD();
//后续处理私钥的代码省略。
}
catch(Exception e)
{
e.getStackTrace();
}

return ks;
}

这个程序在Java上运行时能够解析我的SM2的P12私钥证书的.。但是我把相同的程序放入android程序中,运行就会报错。错误大致在Load()方法那里,感觉是P12的输入流出错,但是我不知道为什么。下面是部分LogCat:
12-18 18:48:43.784: E/SpannableStringBuilder(21420): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
12-18 18:48:48.793: W/IInputConnectionWrapper(21420): clearMetaKeyStates on inactive InputConnection
12-18 18:48:48.793: W/IInputConnectionWrapper(21420): setComposingText on inactive InputConnection
12-18 18:48:49.052: W/System.err(21420): java.io.IOException: error constructing MAC: java.security.InvalidAlgorithmParameterException: unknown parameter type.
12-18 18:48:49.052: W/System.err(21420): at org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(Unknown Source)
12-18 18:48:49.052: W/System.err(21420): at java.security.KeyStore.load(KeyStore.java:590)。
请大神们帮我看看是为什么,是因为程序本身不对,还是说安卓有其他解析P12证书的程序?
...全文
252 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧