Ошибка asn1 с надувным замком API

У меня есть синтаксический анализатор asn1, написанный на Java с API Bouncy Castle. Это работает хорошо, и это работало хорошо в течение 2 лет, анализируя миллион файлов.

Теперь для конкретного файла у меня есть исключение, но я не могу точно понять, где и почему он создается. Возможно, это просто испорченный поток, но я хотел бы иметь возможность провести анализ низкого уровня и понять, в чем заключается исключение.

У кого-то есть опыт работы с этими классами?

Код

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

Трассировки стека

java.lang.IllegalArgumentException: значение BOOLEAN должно содержать 1 байт по адресу org.bouncycastle.asn1.ASN1Boolean.fromOctetString(неизвестный источник) по адресу org.bouncycastle.asn1.ASN1InputStream.createPrimitiveDERObase1.as1.as1.as1.serg..readObject(Неизвестный источник) в org.bouncycastle.asn1.ASN1StreamParser.readVector(Неизвестный источник) в org.bouncycastle.asn1.ASN1StreamParser.readTaggedObject(Неизвестный источник) в org.bouncycastle.asn1.ASN1Inputbject.bu.bouncycastle.asn1.ASN1InputStream.readObject(Неизвестный источник) по адресу com.xx.yyy.parser.Asn1Parser.parseHor horizontal(Asn1Parser.java:384)

1 ответ

Вы можете знать, что означает исключение, просто скачав источник bouncycastle с его веб-сайта. А затем следуйте файлам, показанным в трассировке стека, в данном случае ASN1Boolean.java. Это исключение означает, что ASN1 включил тег BOOLEAN с полем длины!= 1.

Я не могу скачать ваш файл, так как этот адрес заблокирован. В любом случае, попробуйте декодировать его с помощью другого инструмента, чтобы убедиться, что это ошибка кодировки ASN.1.

Другие вопросы по тегам