问题标签 [asn1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - osmocom asn1c生成的C代码编译问题
我已经安装了osmocom asn1c 编译器分支aper-prefix
,以获得 TCAP 协议的实现。我已经使用相应的脚本来编译“.asn”文件。C文件生成成功,但是编译得到的C代码时报错,与这行代码有关:
事实上,文件EXTERNAL.h 是缺失的(貌似这个编译器不支持EXTERNAL 类型)。有人知道这个问题和可能的解决方案吗?
c - osmocom asn1c 为 GSM_MAP/TCAP 协议生成的 C 代码中的文件名冲突
我使用了osmocom asn1c 编译器(aper-prefix 分支)来获得 GSM_MAP 和 TCAP 协议的实现。每个协议都已成功编译。但是在一个项目中同时使用两者时,会出现以下错误:
我建议问题是 C 语言中的文件名冲突,因为在两个不同的 C 文件中有相同的名称结构和不同的定义(例如ErrorCode.h
,在两种协议中都使用)
所以尝试解决问题,使用osmocom PREFIX功能:
但是,编译器会报告以下语法错误:
有人知道这个问题和可能的解决方案吗?
c - 如何在 ASN.1 生成的 C 代码中添加消息可选部分
我使用了libosmo-asn1-map中的 C 代码来获得 GSM_MAP 协议的实现。然后我尝试对“发送身份验证信息”消息进行编码。如3GPP TS 29.002中所述,该消息包含一些强制性部分(例如'imsi')和一些可选部分(例如'requestingNodeType')。
我使用了以下受osmo-tcap-map项目启发的 C 代码。
但是 XER 输出中没有可选部分,而“ requestingNodeType ”已被初始化:
如何启用可选部分(即在消息中添加“requestingNodeType”)?
ruby - 如何在 Ruby 中解析 ASN1
仍然对 ASN1 有点困惑。我正在使用 ruby openssl 解析 RFC3161 时间戳响应,所以我知道规范。我很确定结构已正确加载,但我对如何找到我想要的部件/键感到困惑。我知道有序列(有序)和集合(无序/唯一)。
我看到我们可以调用asn1_object.value[0].value[0]
,但这很笨拙,我希望如果我知道键或标题,我可以像 JSON 或 YAML 一样对待它,然后调用 asn1_object['TSTInfo']['serialNumber']
. 它不是这样工作的吗?
我们是否应该使用序列的属性,这些属性应该是有序的并且已经知道它们的位置,因为我们也有规范和长度?这对我来说很奇怪,但也许那是因为我以前没有使用过很多 TLV 格式。不幸的是,openssl 的文档很少,只是如何OpenSSL::ASN1.decode(der)
通过索引加载对象和访问值。还有一种traverse
方法,但这不会产生标题名称或我认为在这种情况下使用的任何东西。
c++ - OpenSsl 无法读取 DER 格式的证书
更新
背景
我正在尝试读取 DER 格式的证书文件并尝试对其进行验证。
我的证书是DER
格式的。我已经通过以下方式确认了这一点:
使用openssl
命令行:
openssl x509 -text -noout -inform DER -in Cert.cer
:显示证书openssl x509 -text -noout -in Cert.cer
: 显示unable to load certificate
openssl x509 -inform der -in Cert.cer -out Cert.pem
: 将 DER 转换为 PEM
我正在使用以下代码阅读:
输出:
调用后更新输出ERR_load_crypto_strings();
:
问题
d2i_X509_bio(bio_mem, NULL)
返回NULL
。
转换后,我已成功读取 PEM 格式的证书:X509 *x509 = PEM_read_bio_X509(bio_mem, NULL, NULL, NULL);
问题
我错过的代码中有什么问题吗?
如何
DER
使用 openssl 读取格式化的 x509 证书文件?
openssl - 为什么在将 pkcs8 密钥从 pem 转换为 der 时需要密码
因为 pem 只是 der 的 base64 编码。为什么在从一种编码转换为另一种编码时需要密码?如果我用java中的字节数组中的代码读取证书(删除了封装边界)并将该字节数组写入文件,那不是der文件吗?我试过了,但没有用。
我正在使用带有 aes256 的 pkcs8 密码保护密钥
c++ - 在 ASN1.DER 中使用 point2hex 导出 EC_POINT 并使用 Java 重新创建为 X.509
我正在使用 OpenSSL 和 C++ 生成 ECDSA Prime256 密钥对,并尝试使用 Java 导入十六进制版本的公钥。我将从 C++ 获得的字节数组传递给 java 中的以下函数,该函数期望字节数组采用 X.509 编码格式。
我使用以下函数创建了一个椭圆曲线密钥对,该函数重新调整了EC_KEY*
鉴于上述函数返回的密钥对,我想将公钥导出为 ASN1.DER 格式,该格式可以使用上述 java 方法导入。
我通过执行以下操作将类型EC_POINT*
为十六进制的公钥转换为:EC_POINT_point2hex()
其中返回以下内容:
04F588CD1D7103A993D47E53D58C3F40BE8F570604CF2EA01A7657C1423EB19C51BC379F0BEE1FAA60BB9A07DE73EA9BEF7709C1C6429D4051B44F73A458FFB80D
当我使用ASN.1 解码器检查它时,我看到一条消息说Length over 48 bits not supported at position 1
并尝试使用 java 方法导入它,我收到如下错误:
将公钥从 EC_POINT* 导出到 X.509 编码的十六进制字符串时,我是否遗漏了什么,我可以导入该字符串以验证任何签名?
openssl - 在客户端升级openssl后无法解析证书
我们已将客户端的 openssl 从 升级OpenSSL 1.0.1e-fips
到OpenSSL 1.1.1b
. 服务器端正在运行Bouncy Castle 1.46
。
在OpenSSL 1.0.1e-fips
客户端,服务器发送一个如下所示的证书:
在OpenSSL 1.1.1b
客户端,服务器发送一个如下所示的证书:
如果您问我,它们非常相似,但我们现有的未更改流程在调用时失败:
来自 openssl 的错误消息是:
我们是否应该以不同的方式签署证书?或者改变一些其他领域?
哪个标签出错了?
编辑添加了证书的 PEM 格式。服务器根本不使用openssl,它在java中使用Bouncy Castle 1.46
非常感谢!
asn1 - 无法使用 asn1 编译器生成所需的数据结构
我正在将 NGAP asn1c 转换为 c 数据结构,我能够成功编译所有文件,它生成 .c 和 .h 文件,但是,它包含嵌套结构,当我 grep 那个结构不存在的嵌套结构时。我正在使用 asn1c-0.9.29 版本。和 asn1 文件在 NGAP 规范 138 413 中给出。