2017-04-27 19 views
1

私はBouncy Castle APIでjavaで書かれたasn1パーサを持っています。それはうまく動作し、それは2年間、何百万ものファイルを解析していました。bouncy castle apiでasn1エラー

私は例外がありますが、どこで、なぜそれが生成されたのか正確に理解できません。おそらくこれはちょうど破損したストリームですが、私は低レベルの分析を行い、その例外について何か理解できるようにしたいと考えています。

誰かがこれらのクラスでの経験がありますか?

コード

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

スタックトレース

java.lang.IllegalArgumentExceptionが:BOOLEAN値はorg.bouncycastle.asn1.ASN1Boolean.fromOctetString(不明なソース) でそれ に1つのバイトを持っている必要があります(不明なソース) at org.bouncycastle.asn1.ASN1InputStream.createPrimitiveDERObject(不明なソース) at org.bouncycastle.asn1.ASN1StreamP arser.readVector(不明なソース)org.bouncycastle.asn1.ASN1StreamParser.readTaggedObjectで (不明なソース)org.bouncycastle.asn1.ASN1InputStream.buildObjectで (不明なソース)org.bouncycastle.asn1.ASN1InputStream.readObjectで (不明出所)com.xx.yyy.parser.Asn1Parser.parseHorizo​​ntal(Asn1Parser.java:384で )

+1

asn1ファイルを共有できますか?それは正しくエンコードされていないようです。 – Egl

+0

アドレスからダウンロードすることができます:http://s000.tinyupload.com/?file_id=95619810813110768147レコードが多い大きなファイルですか?問題が記録されています2387レコード部門に間違いがない場合は –

答えて

1

あなたは例外がちょうどそのウェブからはBouncyCastleソースをダウンロードして何を意味するのかを知ることができます。 次に、スタックトレースに表示されているファイル(この場合はASN1Boolean.java)に従います。 この例外は、ASN1に長さ!= 1のフィールドを持つBOOLEANというタグが含まれていることを意味します。

このアドレスはブロックされているため、ファイルをダウンロードできません。 とにかく、それを別のツールでデコードして、ASN.1エンコードエラーであることを確認してください。

+0

ASN1を翻訳するツールのアドバイス –

+0

ファイルのアドレスを変更します。今すぐダウンロードできます。https://letransfer.com/downloads/884f3e410ad80e29f5e01a82fc0c0e9f20170429144140/6f28a7 –

+0

おそらくhttps://lapo.it/asn1js/を使用できます。しかし、まず、影響を受けるレコードを取得する必要があります。 – Egl

関連する問題