Bouncy Castle解析证书错误:java.lang.ClassCastException
最近在做cer证书解析的工作,使用bouncycastle库函数进行解析。
程序如下:
public void getCert(byte[] buf){
ByteArrayInputStream bIn;
ASN1InputStream aIn;
bIn = new ByteArrayInputStream(buf);
aIn = new ASN1InputStream(bIn);
try {
seq = (ASN1Sequence )aIn.readObject();
System.out.println("it is ASN1Sequence");
X509CertificateStructure cert = new X509CertificateStructure(seq);
System.out.println("证书版本:\t"+cert.getVersion());
System.out.println("序列号:\t\t"+cert.getSerialNumber().getValue().toString(16));
System.out.println("算法标识:\t"+cert.getSignatureAlgorithm().getObjectId().getId());
System.out.println("签发者:\t\t"+cert.getIssuer());
System.out.println("开始时间:\t"+cert.getStartDate().getTime());
System.out.println("结束时间:\t"+cert.getEndDate().getTime());
System.out.println("主体名:\t\t"+cert.getSubject());
System.out.print("签名值:\t");
DERBitString signature=cert.getSignature();
String strSign=new String(Hex.encode(signature.getBytes()));
System.out.println(strSign);
System.out.println("主体公钥:\t");
SubjectPublicKeyInfo pukinfo=cert.getSubjectPublicKeyInfo();
System.out.println("\t标识符:\t"+pukinfo.getAlgorithmId().getObjectId().getId());
byte[] byPuk=pukinfo.getPublicKeyData().getBytes();
String strPuk=new String(Hex.encode(byPuk));
System.out.println("\t公钥值:\t"+strPuk);
} catch (IOException e) {
e.printStackTrace();
}
}
但是到seq = (ASN1Sequence )= aIn.readObject()的时候就出现了错误,后来发现这里得到的根本不是ASN1Object对象,而是DERUnknownTag对象。
从网上查了很多资料都说是这样的代码,可是为什么会出现这个错误呢?有么有做过或者懂得,先谢过了。。。