文章出自https://blog.csdn.net/u011068702/article/details/76531675
1、把pfx证书文件放入sdcard
adb push ***.pfx /sdcard/
2、解析获取公钥和私钥
-
//证书解析
-
String path = Environment.getExternalStorageDirectory().getPath() + "/sim_shield.pfx";
-
public static Map<String, byte[]> parsePfx(String pfxPath, String pwd) {
-
Map<String, byte[]> keyMap = new HashMap<String, byte[]>();
-
try {
-
KeyStore ks = KeyStore.getInstance("PKCS12");
-
FileInputStream fis = null;
-
try {
-
fis = new FileInputStream(pfxPath);
-
} catch (Exception e) {
-
Log.i("sss", "new FileInputStream fail");
-
}
-
char[] nPassword = pwd.toCharArray();
-
ks.load(fis, nPassword);
-
fis.close();
-
Enumeration<String> aliases = ks.aliases();
-
String keyAlias = null;
-
PrivateKey prikey = null;
-
while (true) {
-
try {
-
keyAlias = aliases.nextElement();
-
prikey = (PrivateKey) ks.getKey(keyAlias, nPassword);
-
if (null != prikey) {
-
break;
-
} else {
-
Log.i("sss", "prikey is null");
-
}
-
} catch (NoSuchElementException e) {
-
Log.i("sss", "NoSuchElementException");
-
return null;
-
}
-
}
-
Certificate cert = (Certificate) ks.getCertificate(keyAlias);
-
Log.i("sss", "while after");
-
if (null != prikey && prikey.getEncoded().length > 0) {
-
keyMap.put(PRI_KEY, prikey.getEncoded());
-
Log.i("sss", "private_key is :" + prikey.getEncoded());
-
} else {
-
Log.i("sss", "private_key is null");
-
}
-
Log.i("sss", "prikey after");
-
if (null != cert && cert.getEncoded().length > 0) {
-
keyMap.put(PUB_KEY, cert.getEncoded());
-
Log.i("sss", "PUBKIC_KEY is :" + cert.getEncoded());
-
} else {
-
Log.i("sss", "public_key is null");
-
}
-
return keyMap;
-
}
-
catch (Exception e) {
-
Log.i("sss", "parsePfx will return null");
-
return null;
-
}
-
}
3、加上权限
-
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />