asn1错误与充气城堡api

时间:2017-04-27 09:55:52

标签: java parsing bouncycastle asn.1

我有一个用Bouncy Castle API用java编写的asn1解析器。它工作得很好,并且在解析了数百万个文件的过程中工作了2年。

现在对于一个特定的文件,我有一个例外,但我无法准确理解它的生成位置和原因。也许这只是一个腐败的流,但我希望能够做一个低级分析,并了解异常是什么。

有人有这些课程的经验吗?

代码

ASN1InputStream stream =new ASN1InputStream(new ByteArrayInputStream(
                (byte[]) asn1));
stream.readObject();

堆栈跟踪

  

java.lang.IllegalArgumentException:BOOLEAN值应该包含1个字节       at org.bouncycastle.asn1.ASN1Boolean.fromOctetString(Unknown Source)       at org.bouncycastle.asn1.ASN1InputStream.createPrimitiveDERObject(Unknown Source)       at org.bouncycastle.asn1.ASN1StreamParser.readObject(Unknown Source)       在org.bouncycastle.asn1.ASN1StreamParser.readVector(未知来源)       在org.bouncycastle.asn1.ASN1StreamParser.readTaggedObject(未知来源)       at org.bouncycastle.asn1.ASN1InputStream.buildObject(Unknown Source)       at org.bouncycastle.asn1.ASN1InputStream.readObject(Unknown Source)       在com.xx.yyy.parser.Asn1Parser.parseHorizo​​ntal(Asn1Parser.java:384)

1 个答案:

答案 0 :(得分:1)

您可以知道异常意味着从网上下载bouncycastle来源。 然后按照堆栈跟踪中显示的文件进行操作,在本例中为ASN1Boolean.java。 此异常意味着ASN1包含一个标签BOOLEAN,其字段长度为!= 1。

我无法下载您的文件,因为我已阻止此地址。 无论如何,尝试使用其他工具对其进行解码,以确保它是ASN.1编码错误。