java - ASN.1 解码错误

标签 java asn.1 ber

我正在使用 Objective System Inc( http://www.obj-sys.com/products/asn1c/index.php ) ASN.1 编译器 和规范文件(cdr_spec.asn) 生成的 Java 源代码。 CDRS基于BER(基本编码规则)格式进行编码

生成Java源代码的命令:

./asn1c cdr_spec.asn -java -ber -reader -print -getset -pkgname com.testpkg

源代码已生成:

ASN1C Compiler, Version 6.4.5
Copyright (c) 1997-2011 Objective Systems, Inc. All Rights Reserved.

Registered to: XXXXXX
Parsing ASN.1 definitions..

Generating Java source files for module XXX-XXX..

当我解码第一个 CDR 文件时,它只解析了 3 行,CDR 文件应该包含超过 100 行,因此它被部分解码。

当我尝试解码另一个 CDR 文件时,解码 CDR 文件失败并给出这样的错误:

com.objsys.asn1j.runtime.Asn1MissingRequiredException: ASN.1 decode error @ offset 832:
SEQUENCE or SET is missing a required element.
10:11:30.394 [main] ERROR com.testpkg.Test - ASN.1 decode error @ offset 832:
SEQUENCE or SET is missing a required element.

当我使用工具检查其语法时,我的 ASN.1 规范文件没有任何语法错误。

熟悉 ASN.1 的人可以帮我解决这个问题吗?

最佳答案

When I try decoding another CDR file, it is failed when decoding CDR file and gave me such error:

com.objsys.asn1j.runtime.Asn1MissingRequiredException: ASN.1 decode error @ offset 832: SEQUENCE or SET is missing a required element.
10:11:30.394 [main] ERROR com.testpkg.Test - ASN.1 decode error @ offset 832:
SEQUENCE or SET is missing a required element.

根据您的描述,问题似乎出在输入数据上,而不是实际规范本身。供应商提供与其硬件生成的数据不太相符的规范并不罕见。

如果您可以确定缺少哪个元素,您可以随时尝试在规范中标记字段OPTIONAL,重新生成代码,然后重试。

或者,您可以随时联系软件和/或硬件供应商寻求帮助。

关于java - ASN.1 解码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30601478/

相关文章:

java - Primefaces 日历内联模式大小错误

java - Java 中的转换问题

java - 来自 jsp :include being ignored? 的 response.sendRedirect()

解码 ASN.1 X2AP 消息 - 如何在 Nokalva ASN.1 编译器中配置部分解码?

java - BouncycaSTLe 签名数据消息中的附加八位字节字符串

java - 如何从 JFrame Java 中的用户输入绘制字符串

ssl - ASN.1 结构迭代器只是被声明但没有实现

java - Java : How works getEncoded method on java. security.Key接口(interface)中的RSA算法?

java - EMV TLV 解析有时不显示构造值(子项)