android 证书解析

    /**
* 返回值是一个ArrayList<HashMap<String, String>> HashMap中的值通过 version取得版本号码
* HashMap中的值通过 issuerDN取得特殊号码 afterPeriod获得有效期 startPeriod证书的开始日期
* serialNumber证书的序列号 sigAlgName证书的签名 sigAlgOIDOID签名算法从证书 *
@param filename2
* 输入值:密码 password 输入流 要解析证书的输入流
*/
public static ArrayList<HashMap<String, String>> readCertificateInformation(
String password, InputStream input) {
HashMap<String, String> hashMap;
ArrayList<HashMap<String, String>> arrayList = new ArrayList<HashMap<String, String>>();
try {
InputStream inputStream = input;
KeyStore keyStore = KeyStore.getInstance("bks");
keyStore.load(inputStream, password.toCharArray());
Enumeration<String> enumeration = keyStore.aliases();
while (enumeration.hasMoreElements()) {
String element = enumeration.nextElement();
Certificate certificate = keyStore.getCertificate(element);
X509Certificate X509certificates = X509Certificate
.getInstance(certificate.getEncoded());
hashMap = new HashMap<String, String>();
hashMap.put("version",
Integer.valueOf(X509certificates.getVersion())
.toString()); // 证书的版本号
hashMap.put("issuerDN", X509certificates.getIssuerDN()
.toString());// 特殊的编号
hashMap.put("afterPeriod", X509certificates.getNotAfter()
.toLocaleString());// 返回证书最后的有效期
hashMap.put("startPeriod", X509certificates.getNotBefore()
.toLocaleString());// 返回证书的开始日期
hashMap.put("serialNumber", X509certificates.getSerialNumber()
.toString());// 返回证书的序列号
hashMap.put("sigAlgName", X509certificates.getSigAlgName()
.toString());// 返回证书的签名
hashMap.put("sigAlgOID", X509certificates.getSigAlgOID()
.toString());// 返回OID签名算法从证书
arrayList.add(hashMap);
}
} catch (Exception e) {
new RuntimeException("证书异常,请稍后再试");
}
return arrayList;
}

 

posted on 2011-11-18 09:24  柠檬哥  阅读(1447)  评论(1编辑  收藏  举报

导航